diff --git a/library-tracker/organization/digibank/.gitignore b/library-tracker/organization/bullard-sanford/.gitignore
similarity index 100%
rename from library-tracker/organization/digibank/.gitignore
rename to library-tracker/organization/bullard-sanford/.gitignore
diff --git a/library-tracker/organization/digibank/application-java/.classpath b/library-tracker/organization/bullard-sanford/application-java/.classpath
similarity index 100%
rename from library-tracker/organization/digibank/application-java/.classpath
rename to library-tracker/organization/bullard-sanford/application-java/.classpath
diff --git a/library-tracker/organization/digibank/application-java/.gitignore b/library-tracker/organization/bullard-sanford/application-java/.gitignore
similarity index 100%
rename from library-tracker/organization/digibank/application-java/.gitignore
rename to library-tracker/organization/bullard-sanford/application-java/.gitignore
diff --git a/library-tracker/organization/digibank/application-java/.settings/org.eclipse.jdt.core.prefs b/library-tracker/organization/bullard-sanford/application-java/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from library-tracker/organization/digibank/application-java/.settings/org.eclipse.jdt.core.prefs
rename to library-tracker/organization/bullard-sanford/application-java/.settings/org.eclipse.jdt.core.prefs
diff --git a/library-tracker/organization/digibank/application-java/.settings/org.eclipse.m2e.core.prefs b/library-tracker/organization/bullard-sanford/application-java/.settings/org.eclipse.m2e.core.prefs
similarity index 100%
rename from library-tracker/organization/digibank/application-java/.settings/org.eclipse.m2e.core.prefs
rename to library-tracker/organization/bullard-sanford/application-java/.settings/org.eclipse.m2e.core.prefs
diff --git a/library-tracker/organization/digibank/application-java/dependency-reduced-pom.xml b/library-tracker/organization/bullard-sanford/application-java/dependency-reduced-pom.xml
similarity index 97%
rename from library-tracker/organization/digibank/application-java/dependency-reduced-pom.xml
rename to library-tracker/organization/bullard-sanford/application-java/dependency-reduced-pom.xml
index 7ff0d0cc..17390c30 100644
--- a/library-tracker/organization/digibank/application-java/dependency-reduced-pom.xml
+++ b/library-tracker/organization/bullard-sanford/application-java/dependency-reduced-pom.xml
@@ -1,61 +1,61 @@
-
-
- 4.0.0
- commercial-paper
- commercial-paper
- 0.0.1-SNAPSHOT
-
- src
-
-
- maven-compiler-plugin
- 3.8.0
-
- 1.8
- 1.8
-
-
-
- maven-shade-plugin
- 3.2.0
-
-
- package
-
- shade
-
-
-
-
-
-
- *:*
-
- META-INF/*.SF
- META-INF/*.DSA
- META-INF/*.RSA
-
-
-
-
-
-
-
-
-
- hyperledger
- Hyperledger Artifactory
- https://hyperledger.jfrog.io/hyperledger/fabric-maven
-
-
- jitpack.io
- https://jitpack.io
-
-
-
- 1.4.2
- UTF-8
- 1.8
- UTF-8
-
-
+
+
+ 4.0.0
+ commercial-paper
+ commercial-paper
+ 0.0.1-SNAPSHOT
+
+ src
+
+
+ maven-compiler-plugin
+ 3.8.0
+
+ 1.8
+ 1.8
+
+
+
+ maven-shade-plugin
+ 3.2.0
+
+
+ package
+
+ shade
+
+
+
+
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+
+
+
+
+
+
+
+
+
+ hyperledger
+ Hyperledger Artifactory
+ https://hyperledger.jfrog.io/hyperledger/fabric-maven
+
+
+ jitpack.io
+ https://jitpack.io
+
+
+
+ 1.4.2
+ UTF-8
+ 1.8
+ UTF-8
+
+
diff --git a/library-tracker/organization/digibank/application-java/pom.xml b/library-tracker/organization/bullard-sanford/application-java/pom.xml
similarity index 100%
rename from library-tracker/organization/digibank/application-java/pom.xml
rename to library-tracker/organization/bullard-sanford/application-java/pom.xml
diff --git a/library-tracker/organization/digibank/application-java/src/org/digibank/AddToWallet.java b/library-tracker/organization/bullard-sanford/application-java/src/org/digibank/AddToWallet.java
similarity index 100%
rename from library-tracker/organization/digibank/application-java/src/org/digibank/AddToWallet.java
rename to library-tracker/organization/bullard-sanford/application-java/src/org/digibank/AddToWallet.java
diff --git a/library-tracker/organization/digibank/application-java/src/org/digibank/Buy.java b/library-tracker/organization/bullard-sanford/application-java/src/org/digibank/Buy.java
similarity index 100%
rename from library-tracker/organization/digibank/application-java/src/org/digibank/Buy.java
rename to library-tracker/organization/bullard-sanford/application-java/src/org/digibank/Buy.java
diff --git a/library-tracker/organization/digibank/application-java/src/org/digibank/Redeem.java b/library-tracker/organization/bullard-sanford/application-java/src/org/digibank/Redeem.java
similarity index 100%
rename from library-tracker/organization/digibank/application-java/src/org/digibank/Redeem.java
rename to library-tracker/organization/bullard-sanford/application-java/src/org/digibank/Redeem.java
diff --git a/library-tracker/organization/digibank/application-java/src/org/papernet/CommercialPaper.java b/library-tracker/organization/bullard-sanford/application-java/src/org/papernet/CommercialPaper.java
similarity index 100%
rename from library-tracker/organization/digibank/application-java/src/org/papernet/CommercialPaper.java
rename to library-tracker/organization/bullard-sanford/application-java/src/org/papernet/CommercialPaper.java
diff --git a/library-tracker/organization/digibank/application-java/src/org/papernet/ledgerapi/State.java b/library-tracker/organization/bullard-sanford/application-java/src/org/papernet/ledgerapi/State.java
similarity index 100%
rename from library-tracker/organization/digibank/application-java/src/org/papernet/ledgerapi/State.java
rename to library-tracker/organization/bullard-sanford/application-java/src/org/papernet/ledgerapi/State.java
diff --git a/library-tracker/organization/digibank/application/.eslintrc.js b/library-tracker/organization/bullard-sanford/application/.eslintrc.js
similarity index 100%
rename from library-tracker/organization/digibank/application/.eslintrc.js
rename to library-tracker/organization/bullard-sanford/application/.eslintrc.js
diff --git a/library-tracker/organization/digibank/application/.gitignore b/library-tracker/organization/bullard-sanford/application/.gitignore
similarity index 100%
rename from library-tracker/organization/digibank/application/.gitignore
rename to library-tracker/organization/bullard-sanford/application/.gitignore
diff --git a/library-tracker/organization/digibank/application/addToWallet.js b/library-tracker/organization/bullard-sanford/application/addToWallet.js
similarity index 100%
rename from library-tracker/organization/digibank/application/addToWallet.js
rename to library-tracker/organization/bullard-sanford/application/addToWallet.js
diff --git a/library-tracker/organization/digibank/application/buy.js b/library-tracker/organization/bullard-sanford/application/buy.js
similarity index 100%
rename from library-tracker/organization/digibank/application/buy.js
rename to library-tracker/organization/bullard-sanford/application/buy.js
diff --git a/library-tracker/organization/digibank/application/getPaper.js b/library-tracker/organization/bullard-sanford/application/getPaper.js
similarity index 100%
rename from library-tracker/organization/digibank/application/getPaper.js
rename to library-tracker/organization/bullard-sanford/application/getPaper.js
diff --git a/library-tracker/organization/digibank/application/package-lock.json b/library-tracker/organization/bullard-sanford/application/package-lock.json
similarity index 100%
rename from library-tracker/organization/digibank/application/package-lock.json
rename to library-tracker/organization/bullard-sanford/application/package-lock.json
diff --git a/library-tracker/organization/digibank/application/package.json b/library-tracker/organization/bullard-sanford/application/package.json
similarity index 100%
rename from library-tracker/organization/digibank/application/package.json
rename to library-tracker/organization/bullard-sanford/application/package.json
diff --git a/library-tracker/organization/digibank/application/redeem.js b/library-tracker/organization/bullard-sanford/application/redeem.js
similarity index 100%
rename from library-tracker/organization/digibank/application/redeem.js
rename to library-tracker/organization/bullard-sanford/application/redeem.js
diff --git a/library-tracker/organization/digibank/configuration/cli/cd b/library-tracker/organization/bullard-sanford/configuration/cli/cd
similarity index 100%
rename from library-tracker/organization/digibank/configuration/cli/cd
rename to library-tracker/organization/bullard-sanford/configuration/cli/cd
diff --git a/library-tracker/organization/digibank/configuration/cli/docker-compose.yml b/library-tracker/organization/bullard-sanford/configuration/cli/docker-compose.yml
similarity index 100%
rename from library-tracker/organization/digibank/configuration/cli/docker-compose.yml
rename to library-tracker/organization/bullard-sanford/configuration/cli/docker-compose.yml
diff --git a/library-tracker/organization/digibank/configuration/cli/monitordocker.sh b/library-tracker/organization/bullard-sanford/configuration/cli/monitordocker.sh
old mode 100755
new mode 100644
similarity index 100%
rename from library-tracker/organization/digibank/configuration/cli/monitordocker.sh
rename to library-tracker/organization/bullard-sanford/configuration/cli/monitordocker.sh
diff --git a/library-tracker/organization/digibank/contract-java/.gitignore b/library-tracker/organization/bullard-sanford/contract-java/.gitignore
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/.gitignore
rename to library-tracker/organization/bullard-sanford/contract-java/.gitignore
diff --git a/library-tracker/organization/digibank/contract-java/build.gradle b/library-tracker/organization/bullard-sanford/contract-java/build.gradle
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/build.gradle
rename to library-tracker/organization/bullard-sanford/contract-java/build.gradle
diff --git a/library-tracker/organization/digibank/contract-java/gradle/wrapper/gradle-wrapper.jar b/library-tracker/organization/bullard-sanford/contract-java/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/gradle/wrapper/gradle-wrapper.jar
rename to library-tracker/organization/bullard-sanford/contract-java/gradle/wrapper/gradle-wrapper.jar
diff --git a/library-tracker/organization/digibank/contract-java/gradle/wrapper/gradle-wrapper.properties b/library-tracker/organization/bullard-sanford/contract-java/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/gradle/wrapper/gradle-wrapper.properties
rename to library-tracker/organization/bullard-sanford/contract-java/gradle/wrapper/gradle-wrapper.properties
diff --git a/library-tracker/organization/digibank/contract-java/gradlew b/library-tracker/organization/bullard-sanford/contract-java/gradlew
old mode 100755
new mode 100644
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/gradlew
rename to library-tracker/organization/bullard-sanford/contract-java/gradlew
diff --git a/library-tracker/organization/digibank/contract-java/gradlew.bat b/library-tracker/organization/bullard-sanford/contract-java/gradlew.bat
similarity index 96%
rename from library-tracker/organization/digibank/contract-java/gradlew.bat
rename to library-tracker/organization/bullard-sanford/contract-java/gradlew.bat
index e95643d6..f9553162 100644
--- a/library-tracker/organization/digibank/contract-java/gradlew.bat
+++ b/library-tracker/organization/bullard-sanford/contract-java/gradlew.bat
@@ -1,84 +1,84 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/library-tracker/organization/digibank/contract-java/settings.gradle b/library-tracker/organization/bullard-sanford/contract-java/settings.gradle
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/settings.gradle
rename to library-tracker/organization/bullard-sanford/contract-java/settings.gradle
diff --git a/library-tracker/organization/digibank/contract-java/src/main/java/org/example/CommercialPaper.java b/library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/CommercialPaper.java
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/src/main/java/org/example/CommercialPaper.java
rename to library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/CommercialPaper.java
diff --git a/library-tracker/organization/digibank/contract-java/src/main/java/org/example/CommercialPaperContext.java b/library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/CommercialPaperContext.java
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/src/main/java/org/example/CommercialPaperContext.java
rename to library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/CommercialPaperContext.java
diff --git a/library-tracker/organization/digibank/contract-java/src/main/java/org/example/CommercialPaperContract.java b/library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/CommercialPaperContract.java
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/src/main/java/org/example/CommercialPaperContract.java
rename to library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/CommercialPaperContract.java
diff --git a/library-tracker/organization/digibank/contract-java/src/main/java/org/example/PaperList.java b/library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/PaperList.java
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/src/main/java/org/example/PaperList.java
rename to library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/PaperList.java
diff --git a/library-tracker/organization/digibank/contract-java/src/main/java/org/example/ledgerapi/State.java b/library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/ledgerapi/State.java
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/src/main/java/org/example/ledgerapi/State.java
rename to library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/ledgerapi/State.java
diff --git a/library-tracker/organization/digibank/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java b/library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java
rename to library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java
diff --git a/library-tracker/organization/digibank/contract-java/src/main/java/org/example/ledgerapi/StateList.java b/library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/ledgerapi/StateList.java
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/src/main/java/org/example/ledgerapi/StateList.java
rename to library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/ledgerapi/StateList.java
diff --git a/library-tracker/organization/digibank/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java b/library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java
rename to library-tracker/organization/bullard-sanford/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java
diff --git a/library-tracker/organization/digibank/contract-java/src/test/java/org/hyperledger/fabric/DevRouter.java b/library-tracker/organization/bullard-sanford/contract-java/src/test/java/org/hyperledger/fabric/DevRouter.java
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/src/test/java/org/hyperledger/fabric/DevRouter.java
rename to library-tracker/organization/bullard-sanford/contract-java/src/test/java/org/hyperledger/fabric/DevRouter.java
diff --git a/library-tracker/organization/digibank/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java b/library-tracker/organization/bullard-sanford/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java
similarity index 100%
rename from library-tracker/organization/digibank/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java
rename to library-tracker/organization/bullard-sanford/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java
diff --git a/library-tracker/organization/digibank/contract/.editorconfig b/library-tracker/organization/bullard-sanford/contract/.editorconfig
old mode 100755
new mode 100644
similarity index 100%
rename from library-tracker/organization/digibank/contract/.editorconfig
rename to library-tracker/organization/bullard-sanford/contract/.editorconfig
diff --git a/library-tracker/organization/digibank/contract/.eslintignore b/library-tracker/organization/bullard-sanford/contract/.eslintignore
similarity index 100%
rename from library-tracker/organization/digibank/contract/.eslintignore
rename to library-tracker/organization/bullard-sanford/contract/.eslintignore
diff --git a/library-tracker/organization/digibank/contract/.eslintrc.js b/library-tracker/organization/bullard-sanford/contract/.eslintrc.js
similarity index 100%
rename from library-tracker/organization/digibank/contract/.eslintrc.js
rename to library-tracker/organization/bullard-sanford/contract/.eslintrc.js
diff --git a/library-tracker/organization/digibank/contract/.gitignore b/library-tracker/organization/bullard-sanford/contract/.gitignore
similarity index 100%
rename from library-tracker/organization/digibank/contract/.gitignore
rename to library-tracker/organization/bullard-sanford/contract/.gitignore
diff --git a/library-tracker/organization/digibank/contract/.npmignore b/library-tracker/organization/bullard-sanford/contract/.npmignore
similarity index 100%
rename from library-tracker/organization/digibank/contract/.npmignore
rename to library-tracker/organization/bullard-sanford/contract/.npmignore
diff --git a/library-tracker/organization/digibank/contract/index.js b/library-tracker/organization/bullard-sanford/contract/index.js
similarity index 100%
rename from library-tracker/organization/digibank/contract/index.js
rename to library-tracker/organization/bullard-sanford/contract/index.js
diff --git a/library-tracker/organization/digibank/contract/ledger-api/state.js b/library-tracker/organization/bullard-sanford/contract/ledger-api/state.js
similarity index 100%
rename from library-tracker/organization/digibank/contract/ledger-api/state.js
rename to library-tracker/organization/bullard-sanford/contract/ledger-api/state.js
diff --git a/library-tracker/organization/digibank/contract/ledger-api/statelist.js b/library-tracker/organization/bullard-sanford/contract/ledger-api/statelist.js
similarity index 100%
rename from library-tracker/organization/digibank/contract/ledger-api/statelist.js
rename to library-tracker/organization/bullard-sanford/contract/ledger-api/statelist.js
diff --git a/library-tracker/organization/digibank/contract/lib/paper.js b/library-tracker/organization/bullard-sanford/contract/lib/paper.js
similarity index 100%
rename from library-tracker/organization/digibank/contract/lib/paper.js
rename to library-tracker/organization/bullard-sanford/contract/lib/paper.js
diff --git a/library-tracker/organization/digibank/contract/lib/papercontract.js b/library-tracker/organization/bullard-sanford/contract/lib/papercontract.js
similarity index 100%
rename from library-tracker/organization/digibank/contract/lib/papercontract.js
rename to library-tracker/organization/bullard-sanford/contract/lib/papercontract.js
diff --git a/library-tracker/organization/digibank/contract/lib/paperlist.js b/library-tracker/organization/bullard-sanford/contract/lib/paperlist.js
similarity index 100%
rename from library-tracker/organization/digibank/contract/lib/paperlist.js
rename to library-tracker/organization/bullard-sanford/contract/lib/paperlist.js
diff --git a/library-tracker/organization/digibank/contract/package-lock.json b/library-tracker/organization/bullard-sanford/contract/package-lock.json
similarity index 100%
rename from library-tracker/organization/digibank/contract/package-lock.json
rename to library-tracker/organization/bullard-sanford/contract/package-lock.json
diff --git a/library-tracker/organization/digibank/contract/package.json b/library-tracker/organization/bullard-sanford/contract/package.json
similarity index 100%
rename from library-tracker/organization/digibank/contract/package.json
rename to library-tracker/organization/bullard-sanford/contract/package.json
diff --git a/library-tracker/organization/digibank/contract/test/contract.js b/library-tracker/organization/bullard-sanford/contract/test/contract.js
similarity index 100%
rename from library-tracker/organization/digibank/contract/test/contract.js
rename to library-tracker/organization/bullard-sanford/contract/test/contract.js
diff --git a/library-tracker/organization/digibank/gateway/networkConnection.yaml b/library-tracker/organization/bullard-sanford/gateway/networkConnection.yaml
similarity index 100%
rename from library-tracker/organization/digibank/gateway/networkConnection.yaml
rename to library-tracker/organization/bullard-sanford/gateway/networkConnection.yaml
diff --git a/library-tracker/organization/digibank/gateway/papernetConnection.yaml b/library-tracker/organization/bullard-sanford/gateway/papernetConnection.yaml
similarity index 100%
rename from library-tracker/organization/digibank/gateway/papernetConnection.yaml
rename to library-tracker/organization/bullard-sanford/gateway/papernetConnection.yaml
diff --git a/library-tracker/organization/magnetocorp/.gitignore b/library-tracker/organization/cannavino/.gitignore
similarity index 100%
rename from library-tracker/organization/magnetocorp/.gitignore
rename to library-tracker/organization/cannavino/.gitignore
diff --git a/library-tracker/organization/magnetocorp/application-java/.classpath b/library-tracker/organization/cannavino/application-java/.classpath
similarity index 100%
rename from library-tracker/organization/magnetocorp/application-java/.classpath
rename to library-tracker/organization/cannavino/application-java/.classpath
diff --git a/library-tracker/organization/magnetocorp/application-java/.gitignore b/library-tracker/organization/cannavino/application-java/.gitignore
similarity index 100%
rename from library-tracker/organization/magnetocorp/application-java/.gitignore
rename to library-tracker/organization/cannavino/application-java/.gitignore
diff --git a/library-tracker/organization/magnetocorp/application-java/.settings/org.eclipse.jdt.core.prefs b/library-tracker/organization/cannavino/application-java/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from library-tracker/organization/magnetocorp/application-java/.settings/org.eclipse.jdt.core.prefs
rename to library-tracker/organization/cannavino/application-java/.settings/org.eclipse.jdt.core.prefs
diff --git a/library-tracker/organization/magnetocorp/application-java/.settings/org.eclipse.m2e.core.prefs b/library-tracker/organization/cannavino/application-java/.settings/org.eclipse.m2e.core.prefs
similarity index 100%
rename from library-tracker/organization/magnetocorp/application-java/.settings/org.eclipse.m2e.core.prefs
rename to library-tracker/organization/cannavino/application-java/.settings/org.eclipse.m2e.core.prefs
diff --git a/library-tracker/organization/magnetocorp/application-java/dependency-reduced-pom.xml b/library-tracker/organization/cannavino/application-java/dependency-reduced-pom.xml
similarity index 97%
rename from library-tracker/organization/magnetocorp/application-java/dependency-reduced-pom.xml
rename to library-tracker/organization/cannavino/application-java/dependency-reduced-pom.xml
index 7ff0d0cc..17390c30 100644
--- a/library-tracker/organization/magnetocorp/application-java/dependency-reduced-pom.xml
+++ b/library-tracker/organization/cannavino/application-java/dependency-reduced-pom.xml
@@ -1,61 +1,61 @@
-
-
- 4.0.0
- commercial-paper
- commercial-paper
- 0.0.1-SNAPSHOT
-
- src
-
-
- maven-compiler-plugin
- 3.8.0
-
- 1.8
- 1.8
-
-
-
- maven-shade-plugin
- 3.2.0
-
-
- package
-
- shade
-
-
-
-
-
-
- *:*
-
- META-INF/*.SF
- META-INF/*.DSA
- META-INF/*.RSA
-
-
-
-
-
-
-
-
-
- hyperledger
- Hyperledger Artifactory
- https://hyperledger.jfrog.io/hyperledger/fabric-maven
-
-
- jitpack.io
- https://jitpack.io
-
-
-
- 1.4.2
- UTF-8
- 1.8
- UTF-8
-
-
+
+
+ 4.0.0
+ commercial-paper
+ commercial-paper
+ 0.0.1-SNAPSHOT
+
+ src
+
+
+ maven-compiler-plugin
+ 3.8.0
+
+ 1.8
+ 1.8
+
+
+
+ maven-shade-plugin
+ 3.2.0
+
+
+ package
+
+ shade
+
+
+
+
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+
+
+
+
+
+
+
+
+
+ hyperledger
+ Hyperledger Artifactory
+ https://hyperledger.jfrog.io/hyperledger/fabric-maven
+
+
+ jitpack.io
+ https://jitpack.io
+
+
+
+ 1.4.2
+ UTF-8
+ 1.8
+ UTF-8
+
+
diff --git a/library-tracker/organization/magnetocorp/application-java/pom.xml b/library-tracker/organization/cannavino/application-java/pom.xml
similarity index 100%
rename from library-tracker/organization/magnetocorp/application-java/pom.xml
rename to library-tracker/organization/cannavino/application-java/pom.xml
diff --git a/library-tracker/organization/magnetocorp/application-java/src/org/magnetocorp/AddToWallet.java b/library-tracker/organization/cannavino/application-java/src/org/digibank/AddToWallet.java
similarity index 72%
rename from library-tracker/organization/magnetocorp/application-java/src/org/magnetocorp/AddToWallet.java
rename to library-tracker/organization/cannavino/application-java/src/org/digibank/AddToWallet.java
index 4470021e..01ace5aa 100644
--- a/library-tracker/organization/magnetocorp/application-java/src/org/magnetocorp/AddToWallet.java
+++ b/library-tracker/organization/cannavino/application-java/src/org/digibank/AddToWallet.java
@@ -2,7 +2,7 @@
SPDX-License-Identifier: Apache-2.0
*/
-package org.magnetocorp;
+package org.digibank;
import java.io.IOException;
import java.nio.file.Files;
@@ -18,19 +18,19 @@ public class AddToWallet {
public static void main(String[] args) {
try {
// A wallet stores a collection of identities
- Path walletPath = Paths.get("..", "identity", "user", "isabella", "wallet");
+ Path walletPath = Paths.get("..", "identity", "user", "balaji", "wallet");
Wallet wallet = Wallet.createFileSystemWallet(walletPath);
// Location of credentials to be stored in the wallet
- Path credentialPath = Paths.get("..", "..",".." ,".." ,"basic-network", "crypto-config",
- "peerOrganizations", "org1.example.com", "users", "User1@org1.example.com", "msp");
+ Path credentialPath = Paths.get("..", "..", "..", "..","basic-network", "crypto-config",
+ "peerOrganizations", "org1.example.com", "users", "Admin@org1.example.com", "msp");
Path certificatePem = credentialPath.resolve(Paths.get("signcerts",
- "User1@org1.example.com-cert.pem"));
+ "Admin@org1.example.com-cert.pem"));
Path privateKey = credentialPath.resolve(Paths.get("keystore",
- "c75bd6911aca808941c3557ee7c97e90f3952e379497dc55eb903f31b50abc83_sk"));
+ "cd96d5260ad4757551ed4a5a991e62130f8008a0bf996e4e4b84cd097a747fec_sk"));
// Load credentials into wallet
- String identityLabel = "User1@org1.example.com";
+ String identityLabel = "Admin@org1.example.com";
Identity identity = Identity.createIdentity("Org1MSP", Files.newBufferedReader(certificatePem), Files.newBufferedReader(privateKey));
wallet.put(identityLabel, identity);
diff --git a/library-tracker/organization/magnetocorp/application-java/src/org/magnetocorp/Issue.java b/library-tracker/organization/cannavino/application-java/src/org/digibank/Buy.java
similarity index 73%
rename from library-tracker/organization/magnetocorp/application-java/src/org/magnetocorp/Issue.java
rename to library-tracker/organization/cannavino/application-java/src/org/digibank/Buy.java
index 352d65d9..9e3710ed 100644
--- a/library-tracker/organization/magnetocorp/application-java/src/org/magnetocorp/Issue.java
+++ b/library-tracker/organization/cannavino/application-java/src/org/digibank/Buy.java
@@ -2,7 +2,7 @@
SPDX-License-Identifier: Apache-2.0
*/
-package org.magnetocorp;
+package org.digibank;
import java.io.IOException;
import java.nio.file.Path;
@@ -17,11 +17,12 @@ import org.hyperledger.fabric.gateway.Network;
import org.hyperledger.fabric.gateway.Wallet;
import org.papernet.CommercialPaper;
-public class Issue {
+public class Buy {
private static final String ENVKEY="CONTRACT_NAME";
-
+
public static void main(String[] args) {
+ Gateway.Builder builder = Gateway.createBuilder();
String contractName="papercontract";
// get the name of the contract, in case it is overridden
@@ -30,16 +31,14 @@ public class Issue {
contractName=envvar.get(ENVKEY);
}
- Gateway.Builder builder = Gateway.createBuilder();
-
try {
// A wallet stores a collection of identities
- Path walletPath = Paths.get("..", "identity", "user", "isabella", "wallet");
+ Path walletPath = Paths.get("..", "identity", "user", "balaji", "wallet");
Wallet wallet = Wallet.createFileSystemWallet(walletPath);
- String userName = "User1@org1.example.com";
+ String userName = "Admin@org1.example.com";
- Path connectionProfile = Paths.get("..", "gateway", "networkConnection.yaml");
+ Path connectionProfile = Paths.get("..", "gateway", "networkConnection.yaml");
// Set connection options on the gateway builder
builder.identity(wallet, userName).networkConfig(connectionProfile).discovery(false);
@@ -53,14 +52,14 @@ public class Issue {
// Get addressability to commercial paper contract
System.out.println("Use org.papernet.commercialpaper smart contract.");
- Contract contract = network.getContract(contractName, "org.papernet.commercialpaper");
+ Contract contract = network.getContract(contractName, "org.papernet.commercialpaper");
- // Issue commercial paper
- System.out.println("Submit commercial paper issue transaction.");
- byte[] response = contract.submitTransaction("issue", "MagnetoCorp", "00001", "2020-05-31", "2020-11-30", "5000000");
+ // Buy commercial paper
+ System.out.println("Submit commercial paper buy transaction.");
+ byte[] response = contract.submitTransaction("buy", "MagnetoCorp", "00001", "MagnetoCorp", "DigiBank", "4900000", "2020-05-31");
// Process response
- System.out.println("Process issue transaction response.");
+ System.out.println("Process buy transaction response.");
CommercialPaper paper = CommercialPaper.deserialize(response);
System.out.println(paper);
}
diff --git a/library-tracker/organization/cannavino/application-java/src/org/digibank/Redeem.java b/library-tracker/organization/cannavino/application-java/src/org/digibank/Redeem.java
new file mode 100644
index 00000000..b60b04c5
--- /dev/null
+++ b/library-tracker/organization/cannavino/application-java/src/org/digibank/Redeem.java
@@ -0,0 +1,72 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package org.digibank;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Map;
+import java.util.concurrent.TimeoutException;
+
+import org.hyperledger.fabric.gateway.Contract;
+import org.hyperledger.fabric.gateway.Gateway;
+import org.hyperledger.fabric.gateway.GatewayException;
+import org.hyperledger.fabric.gateway.Network;
+import org.hyperledger.fabric.gateway.Wallet;
+import org.papernet.CommercialPaper;
+
+public class Redeem {
+
+ private static final String ENVKEY="CONTRACT_NAME";
+
+ public static void main(String[] args) {
+ Gateway.Builder builder = Gateway.createBuilder();
+
+ String contractName="papercontract";
+ // get the name of the contract, in case it is overridden
+ Map envvar = System.getenv();
+ if (envvar.containsKey(ENVKEY)){
+ contractName=envvar.get(ENVKEY);
+ }
+
+ try {
+ // A wallet stores a collection of identities
+ Path walletPath = Paths.get("..", "identity", "user", "balaji", "wallet");
+ Wallet wallet = Wallet.createFileSystemWallet(walletPath);
+
+ String userName = "Admin@org1.example.com";
+
+ Path connectionProfile = Paths.get("..", "gateway", "networkConnection.yaml");
+
+ // Set connection options on the gateway builder
+ builder.identity(wallet, userName).networkConfig(connectionProfile).discovery(false);
+
+ // Connect to gateway using application specified parameters
+ try(Gateway gateway = builder.connect()) {
+
+ // Access PaperNet network
+ System.out.println("Use network channel: mychannel.");
+ Network network = gateway.getNetwork("mychannel");
+
+ // Get addressability to commercial paper contract
+ System.out.println("Use org.papernet.commercialpaper smart contract.");
+ Contract contract = network.getContract("papercontract", "org.papernet.commercialpaper");
+
+ // Redeem commercial paper
+ System.out.println("Submit commercial paper redeem transaction.");
+ byte[] response = contract.submitTransaction("redeem", "MagnetoCorp", "00001", "DigiBank", "2020-11-30");
+
+ // Process response
+ System.out.println("Process redeem transaction response.");
+ CommercialPaper paper = CommercialPaper.deserialize(response);
+ System.out.println(paper);
+ }
+ } catch (GatewayException | IOException | TimeoutException | InterruptedException e) {
+ e.printStackTrace();
+ System.exit(-1);
+ }
+ }
+
+}
diff --git a/library-tracker/organization/magnetocorp/application-java/src/org/papernet/CommercialPaper.java b/library-tracker/organization/cannavino/application-java/src/org/papernet/CommercialPaper.java
similarity index 96%
rename from library-tracker/organization/magnetocorp/application-java/src/org/papernet/CommercialPaper.java
rename to library-tracker/organization/cannavino/application-java/src/org/papernet/CommercialPaper.java
index e909b494..dbb4e3f1 100644
--- a/library-tracker/organization/magnetocorp/application-java/src/org/papernet/CommercialPaper.java
+++ b/library-tracker/organization/cannavino/application-java/src/org/papernet/CommercialPaper.java
@@ -1,20 +1,19 @@
/*
- * SPDX-License-Identifier: Apache-2.0
+ * SPDX-License-Identifier:
*/
package org.papernet;
import static java.nio.charset.StandardCharsets.UTF_8;
+import org.papernet.ledgerapi.State;
import org.hyperledger.fabric.contract.annotation.DataType;
import org.hyperledger.fabric.contract.annotation.Property;
import org.json.JSONObject;
import org.json.JSONPropertyIgnore;
-import org.papernet.ledgerapi.State;
@DataType()
public class CommercialPaper extends State {
-
// Enumerate commercial paper state values
public final static String ISSUED = "ISSUED";
public final static String TRADING = "TRADING";
@@ -162,8 +161,8 @@ public class CommercialPaper extends State {
String maturityDateTime = json.getString("maturityDateTime");
String owner = json.getString("owner");
int faceValue = json.getInt("faceValue");
- String state = json.getString("state");
- return createInstance(issuer, paperNumber, issueDateTime, maturityDateTime, faceValue, owner, state);
+ String state = json.getString("state");
+ return createInstance(issuer, paperNumber, issueDateTime, maturityDateTime, faceValue,owner,state);
}
public static byte[] serialize(CommercialPaper paper) {
@@ -176,8 +175,7 @@ public class CommercialPaper extends State {
public static CommercialPaper createInstance(String issuer, String paperNumber, String issueDateTime,
String maturityDateTime, int faceValue, String owner, String state) {
return new CommercialPaper().setIssuer(issuer).setPaperNumber(paperNumber).setMaturityDateTime(maturityDateTime)
- .setFaceValue(faceValue).setKey().setIssueDateTime(issueDateTime).setOwner(issuer).setState(state);
+ .setFaceValue(faceValue).setKey().setIssueDateTime(issueDateTime).setOwner(owner).setState(state);
}
-
}
diff --git a/library-tracker/organization/magnetocorp/application-java/src/org/papernet/ledgerapi/State.java b/library-tracker/organization/cannavino/application-java/src/org/papernet/ledgerapi/State.java
similarity index 100%
rename from library-tracker/organization/magnetocorp/application-java/src/org/papernet/ledgerapi/State.java
rename to library-tracker/organization/cannavino/application-java/src/org/papernet/ledgerapi/State.java
diff --git a/library-tracker/organization/magnetocorp/application/.eslintrc.js b/library-tracker/organization/cannavino/application/.eslintrc.js
similarity index 100%
rename from library-tracker/organization/magnetocorp/application/.eslintrc.js
rename to library-tracker/organization/cannavino/application/.eslintrc.js
diff --git a/library-tracker/organization/magnetocorp/application/.gitignore b/library-tracker/organization/cannavino/application/.gitignore
similarity index 100%
rename from library-tracker/organization/magnetocorp/application/.gitignore
rename to library-tracker/organization/cannavino/application/.gitignore
diff --git a/library-tracker/organization/magnetocorp/application/addToWallet.js b/library-tracker/organization/cannavino/application/addToWallet.js
similarity index 77%
rename from library-tracker/organization/magnetocorp/application/addToWallet.js
rename to library-tracker/organization/cannavino/application/addToWallet.js
index f0403533..b2b4415f 100644
--- a/library-tracker/organization/magnetocorp/application/addToWallet.js
+++ b/library-tracker/organization/cannavino/application/addToWallet.js
@@ -12,7 +12,7 @@ const path = require('path');
const fixtures = path.resolve(__dirname, '../../../../basic-network');
// A wallet stores a collection of identities
-const wallet = new FileSystemWallet('../identity/user/isabella/wallet');
+const wallet = new FileSystemWallet('../identity/user/balaji/wallet');
async function main() {
@@ -20,12 +20,12 @@ async function main() {
try {
// Identity to credentials to be stored in the wallet
- const credPath = path.join(fixtures, '/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com');
- const cert = fs.readFileSync(path.join(credPath, '/msp/signcerts/User1@org1.example.com-cert.pem')).toString();
- const key = fs.readFileSync(path.join(credPath, '/msp/keystore/c75bd6911aca808941c3557ee7c97e90f3952e379497dc55eb903f31b50abc83_sk')).toString();
+ const credPath = path.join(fixtures, '/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com');
+ const cert = fs.readFileSync(path.join(credPath, '/msp/signcerts/Admin@org1.example.com-cert.pem')).toString();
+ const key = fs.readFileSync(path.join(credPath, '/msp/keystore/cd96d5260ad4757551ed4a5a991e62130f8008a0bf996e4e4b84cd097a747fec_sk')).toString();
// Load credentials into wallet
- const identityLabel = 'User1@org1.example.com';
+ const identityLabel = 'Admin@org1.example.com';
const identity = X509WalletMixin.createIdentity('Org1MSP', cert, key);
await wallet.import(identityLabel, identity);
diff --git a/library-tracker/organization/cannavino/application/buy.js b/library-tracker/organization/cannavino/application/buy.js
new file mode 100644
index 00000000..898be013
--- /dev/null
+++ b/library-tracker/organization/cannavino/application/buy.js
@@ -0,0 +1,102 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+/*
+ * This application has 6 basic steps:
+ * 1. Select an identity from a wallet
+ * 2. Connect to network gateway
+ * 3. Access PaperNet network
+ * 4. Construct request to issue commercial paper
+ * 5. Submit transaction
+ * 6. Process response
+ */
+
+'use strict';
+
+// Bring key classes into scope, most importantly Fabric SDK network class
+const fs = require('fs');
+const yaml = require('js-yaml');
+const { FileSystemWallet, Gateway } = require('fabric-network');
+const CommercialPaper = require('../../magnetocorp/contract/lib/paper.js');
+
+// A wallet stores a collection of identities for use
+const wallet = new FileSystemWallet('../identity/user/balaji/wallet');
+
+// Main program function
+async function main () {
+
+ // A gateway defines the peers used to access Fabric networks
+ const gateway = new Gateway();
+
+ // Main try/catch block
+ try {
+
+ // Specify userName for network access
+ // const userName = 'isabella.issuer@magnetocorp.com';
+ const userName = 'Admin@org1.example.com';
+
+ // Load connection profile; will be used to locate a gateway
+ let connectionProfile = yaml.safeLoad(fs.readFileSync('../gateway/networkConnection.yaml', 'utf8'));
+
+ // Set connection options; identity and wallet
+ let connectionOptions = {
+ identity: userName,
+ wallet: wallet,
+ discovery: { enabled: false, asLocalhost: true }
+
+ };
+
+ // Connect to gateway using application specified parameters
+ console.log('Connect to Fabric gateway.');
+
+ await gateway.connect(connectionProfile, connectionOptions);
+
+ // Access PaperNet network
+ console.log('Use network channel: mychannel.');
+
+ const network = await gateway.getNetwork('mychannel');
+
+ // Get addressability to commercial paper contract
+ console.log('Use org.papernet.commercialpaper smart contract.');
+
+ const contract = await network.getContract('papercontract', 'org.papernet.commercialpaper');
+
+ // buy commercial paper
+ console.log('Submit commercial paper buy transaction.');
+
+ const buyResponse = await contract.submitTransaction('buy', 'MagnetoCorp', '00001', 'MagnetoCorp', 'DigiBank', '4900000', '2020-05-31');
+
+ // process response
+ console.log('Process buy transaction response.');
+
+ let paper = CommercialPaper.fromBuffer(buyResponse);
+
+ console.log(`${paper.issuer} commercial paper : ${paper.paperNumber} successfully purchased by ${paper.owner}`);
+ console.log('Transaction complete.');
+
+ } catch (error) {
+
+ console.log(`Error processing transaction. ${error}`);
+ console.log(error.stack);
+
+ } finally {
+
+ // Disconnect from the gateway
+ console.log('Disconnect from Fabric gateway.');
+ gateway.disconnect();
+
+ }
+}
+main().then(() => {
+
+ console.log('Buy program complete.');
+
+}).catch((e) => {
+
+ console.log('Buy program exception.');
+ console.log(e);
+ console.log(e.stack);
+ process.exit(-1);
+
+});
\ No newline at end of file
diff --git a/library-tracker/organization/cannavino/application/getPaper.js b/library-tracker/organization/cannavino/application/getPaper.js
new file mode 100644
index 00000000..de7e59d4
--- /dev/null
+++ b/library-tracker/organization/cannavino/application/getPaper.js
@@ -0,0 +1,101 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+/*
+ * This application has 6 basic steps:
+ * 1. Select an identity from a wallet
+ * 2. Connect to network gateway
+ * 3. Access PaperNet network
+ * 4. Construct request to query a commercial paper
+ * 5. Submit transaction
+ * 6. Process response
+ */
+'use strict';
+// Bring key classes into scope, most importantly Fabric SDK network class
+const fs = require('fs');
+const yaml = require('js-yaml');
+const { FileSystemWallet, Gateway } = require('fabric-network');
+const CommercialPaper = require('../contract/lib/paper.js');
+// A wallet stores a collection of identities for use
+const wallet = new FileSystemWallet('../identity/user/balaji/wallet');
+// Main program function
+async function main() {
+ // A gateway defines the peers used to access Fabric networks
+ const gateway = new Gateway();
+
+ // Main try/catch block
+ try {
+ // Specify userName for network access
+ // const userName = 'isabella.issuer@magnetocorp.com';
+ const userName = 'Admin@org1.example.com';
+ // Load connection profile; will be used to locate a gateway
+ let connectionProfile = yaml.safeLoad(fs.readFileSync('../gateway/networkConnection.yaml', 'utf8'));
+ // Set connection options; identity and wallet
+ let connectionOptions = {
+ identity: userName,
+ wallet: wallet,
+ discovery: { enabled:false, asLocalhost: true }
+ };
+
+ // Connect to gateway using application specified parameters
+ console.log('Connect to Fabric gateway.');
+ await gateway.connect(connectionProfile, connectionOptions);
+
+ // Access PaperNet network
+ console.log('Use network channel: mychannel.');
+ const network = await gateway.getNetwork('mychannel');
+
+ // Get addressability to commercial paper contract
+ console.log('Use org.papernet.commercialpaper smart contract.');
+ const contract = await network.getContract('papercontract', 'org.papernet.commercialpaper');
+
+ // get commercial paper
+ console.log('Submit commercial paper getPaper transaction.');
+ const getPaperResponse = await contract.evaluateTransaction('getPaper', 'MagnetoCorp', '00001');
+
+ // process response
+ console.log('Process getPaper transaction response.');
+ let paperJSON = JSON.parse(getPaperResponse);
+ let paper = CommercialPaper.createInstance(paperJSON.issuer, paperJSON.paperNumber, paperJSON.issueDateTime, paperJSON.maturityDateTime, paperJSON.faceValue);
+ paper.setOwner(paperJSON.owner);
+ paper.currentState = paperJSON.currentState;
+
+ // let paper = CommercialPaper.fromBuffer(getPaperResponse);
+ let paperState = 'Unknown';
+ if(paper.isIssued()) {
+ paperState = 'ISSUED';
+ } else if(paper.isTrading()){
+ paperState = 'TRADING';
+ } else if(paper.isRedeemed()){
+ paperState = 'REDEEMED';
+ }
+
+ console.log(` +--------- Paper Retrieved ---------+ `);
+ console.log(` | Paper number: "${paper.paperNumber}"`);
+ console.log(` | Paper is owned by: "${paper.owner}"`);
+ console.log(` | Paper is currently: "${paperState}"`);
+ console.log(` | Paper face value: "${paper.faceValue}"`);
+ console.log(` | Paper is issued by: "${paper.issuer}"`);
+ console.log(` | Paper issue on: "${paper.issueDateTime}"`);
+ console.log(` | Paper matures on: "${paper.maturityDateTime}"`);
+ console.log(` +-----------------------------------+ `);
+ console.log('Transaction complete.');
+
+ //console.log('Transaction complete.' + JSON.stringify(paper));
+ } catch (error) {
+ console.log(`Error processing transaction. ${error}`);
+ console.log(error.stack);
+ } finally {
+ // Disconnect from the gateway
+ console.log('Disconnect from Fabric gateway.')
+ gateway.disconnect();
+ }
+}
+main().then(() => {
+ console.log('getPaper program complete.');
+}).catch((e) => {
+ console.log('getPaper program exception.');
+ console.log(e);
+ console.log(e.stack);
+ process.exit(-1);
+});
\ No newline at end of file
diff --git a/library-tracker/organization/magnetocorp/application/package-lock.json b/library-tracker/organization/cannavino/application/package-lock.json
similarity index 99%
rename from library-tracker/organization/magnetocorp/application/package-lock.json
rename to library-tracker/organization/cannavino/application/package-lock.json
index de127342..f9e316a2 100644
--- a/library-tracker/organization/magnetocorp/application/package-lock.json
+++ b/library-tracker/organization/cannavino/application/package-lock.json
@@ -548,9 +548,9 @@
}
},
"eslint-utils": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.0.tgz",
- "integrity": "sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==",
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz",
+ "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==",
"dev": true,
"requires": {
"eslint-visitor-keys": "^1.0.0"
diff --git a/library-tracker/organization/magnetocorp/application/package.json b/library-tracker/organization/cannavino/application/package.json
similarity index 77%
rename from library-tracker/organization/magnetocorp/application/package.json
rename to library-tracker/organization/cannavino/application/package.json
index 932374da..3655349d 100644
--- a/library-tracker/organization/magnetocorp/application/package.json
+++ b/library-tracker/organization/cannavino/application/package.json
@@ -2,10 +2,10 @@
"name": "nodejs",
"version": "1.0.0",
"description": "",
- "main": "issue.js",
+ "main": "buy.js",
"scripts": {
"lint": "eslint .",
- "test": "rm -rf _idwallet && node addToWallet.js && node issue.js"
+ "test": "rm -rf _idwallet && node addToWallet.js && node buy.js"
},
"keywords": [],
"author": "",
diff --git a/library-tracker/organization/magnetocorp/application/issue.js b/library-tracker/organization/cannavino/application/redeem.js
similarity index 76%
rename from library-tracker/organization/magnetocorp/application/issue.js
rename to library-tracker/organization/cannavino/application/redeem.js
index eaaae3ae..b13f695c 100644
--- a/library-tracker/organization/magnetocorp/application/issue.js
+++ b/library-tracker/organization/cannavino/application/redeem.js
@@ -21,8 +21,7 @@ const { FileSystemWallet, Gateway } = require('fabric-network');
const CommercialPaper = require('../contract/lib/paper.js');
// A wallet stores a collection of identities for use
-//const wallet = new FileSystemWallet('../user/isabella/wallet');
-const wallet = new FileSystemWallet('../identity/user/isabella/wallet');
+const wallet = new FileSystemWallet('../identity/user/balaji/wallet');
// Main program function
async function main() {
@@ -35,7 +34,7 @@ async function main() {
// Specify userName for network access
// const userName = 'isabella.issuer@magnetocorp.com';
- const userName = 'User1@org1.example.com';
+ const userName = 'Admin@org1.example.com';
// Load connection profile; will be used to locate a gateway
let connectionProfile = yaml.safeLoad(fs.readFileSync('../gateway/networkConnection.yaml', 'utf8'));
@@ -60,19 +59,19 @@ async function main() {
// Get addressability to commercial paper contract
console.log('Use org.papernet.commercialpaper smart contract.');
- const contract = await network.getContract('papercontract');
+ const contract = await network.getContract('papercontract', 'org.papernet.commercialpaper');
- // issue commercial paper
- console.log('Submit commercial paper issue transaction.');
+ // redeem commercial paper
+ console.log('Submit commercial paper redeem transaction.');
- const issueResponse = await contract.submitTransaction('issue', 'MagnetoCorp', '00001', '2020-05-31', '2020-11-30', '5000000');
+ const redeemResponse = await contract.submitTransaction('redeem', 'MagnetoCorp', '00001', 'DigiBank', '2020-11-30');
// process response
- console.log('Process issue transaction response.'+issueResponse);
+ console.log('Process redeem transaction response.');
- let paper = CommercialPaper.fromBuffer(issueResponse);
+ let paper = CommercialPaper.fromBuffer(redeemResponse);
- console.log(`${paper.issuer} commercial paper : ${paper.paperNumber} successfully issued for value ${paper.faceValue}`);
+ console.log(`${paper.issuer} commercial paper : ${paper.paperNumber} successfully redeemed with ${paper.owner}`);
console.log('Transaction complete.');
} catch (error) {
@@ -90,11 +89,11 @@ async function main() {
}
main().then(() => {
- console.log('Issue program complete.');
+ console.log('Redeem program complete.');
}).catch((e) => {
- console.log('Issue program exception.');
+ console.log('Redeem program exception.');
console.log(e);
console.log(e.stack);
process.exit(-1);
diff --git a/library-tracker/organization/cannavino/configuration/cli/cd b/library-tracker/organization/cannavino/configuration/cli/cd
new file mode 100644
index 00000000..109a7b4a
--- /dev/null
+++ b/library-tracker/organization/cannavino/configuration/cli/cd
@@ -0,0 +1 @@
+Suggest that you change to this dir /home/matthew/go/src/github.com/hyperledger/fabric-samples/commercial-paper/organization/digibank
diff --git a/library-tracker/organization/magnetocorp/configuration/cli/docker-compose.yml b/library-tracker/organization/cannavino/configuration/cli/docker-compose.yml
similarity index 88%
rename from library-tracker/organization/magnetocorp/configuration/cli/docker-compose.yml
rename to library-tracker/organization/cannavino/configuration/cli/docker-compose.yml
index 510b1584..434b2a96 100644
--- a/library-tracker/organization/magnetocorp/configuration/cli/docker-compose.yml
+++ b/library-tracker/organization/cannavino/configuration/cli/docker-compose.yml
@@ -11,8 +11,8 @@ networks:
name: net_basic
services:
- cliMagnetoCorp:
- container_name: cliMagnetoCorp
+ cliDigiBank:
+ container_name: cliDigiBank
image: hyperledger/fabric-tools
tty: true
environment:
@@ -28,7 +28,7 @@ services:
command: /bin/bash
volumes:
- /var/run/:/host/var/run/
- - ./../../../../organization/magnetocorp:/opt/gopath/src/github.com/
+ - ./../../../../organization/digibank:/opt/gopath/src/github.com/
- ./../../../../../basic-network/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
networks:
- basic
diff --git a/library-tracker/organization/magnetocorp/configuration/cli/monitordocker.sh b/library-tracker/organization/cannavino/configuration/cli/monitordocker.sh
old mode 100755
new mode 100644
similarity index 100%
rename from library-tracker/organization/magnetocorp/configuration/cli/monitordocker.sh
rename to library-tracker/organization/cannavino/configuration/cli/monitordocker.sh
diff --git a/library-tracker/organization/cannavino/contract-java/.gitignore b/library-tracker/organization/cannavino/contract-java/.gitignore
new file mode 100644
index 00000000..73d55ace
--- /dev/null
+++ b/library-tracker/organization/cannavino/contract-java/.gitignore
@@ -0,0 +1,5 @@
+.gradle/
+build/
+bin/
+.classpath
+.settings/
\ No newline at end of file
diff --git a/library-tracker/organization/magnetocorp/contract-java/build.gradle b/library-tracker/organization/cannavino/contract-java/build.gradle
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract-java/build.gradle
rename to library-tracker/organization/cannavino/contract-java/build.gradle
diff --git a/library-tracker/organization/magnetocorp/contract-java/gradle/wrapper/gradle-wrapper.jar b/library-tracker/organization/cannavino/contract-java/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract-java/gradle/wrapper/gradle-wrapper.jar
rename to library-tracker/organization/cannavino/contract-java/gradle/wrapper/gradle-wrapper.jar
diff --git a/library-tracker/organization/magnetocorp/contract-java/gradle/wrapper/gradle-wrapper.properties b/library-tracker/organization/cannavino/contract-java/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract-java/gradle/wrapper/gradle-wrapper.properties
rename to library-tracker/organization/cannavino/contract-java/gradle/wrapper/gradle-wrapper.properties
diff --git a/library-tracker/organization/magnetocorp/contract-java/gradlew b/library-tracker/organization/cannavino/contract-java/gradlew
old mode 100755
new mode 100644
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract-java/gradlew
rename to library-tracker/organization/cannavino/contract-java/gradlew
diff --git a/library-tracker/organization/magnetocorp/contract-java/gradlew.bat b/library-tracker/organization/cannavino/contract-java/gradlew.bat
similarity index 96%
rename from library-tracker/organization/magnetocorp/contract-java/gradlew.bat
rename to library-tracker/organization/cannavino/contract-java/gradlew.bat
index e95643d6..f9553162 100644
--- a/library-tracker/organization/magnetocorp/contract-java/gradlew.bat
+++ b/library-tracker/organization/cannavino/contract-java/gradlew.bat
@@ -1,84 +1,84 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/library-tracker/organization/magnetocorp/contract-java/settings.gradle b/library-tracker/organization/cannavino/contract-java/settings.gradle
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract-java/settings.gradle
rename to library-tracker/organization/cannavino/contract-java/settings.gradle
diff --git a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/CommercialPaper.java b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/CommercialPaper.java
similarity index 96%
rename from library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/CommercialPaper.java
rename to library-tracker/organization/cannavino/contract-java/src/main/java/org/example/CommercialPaper.java
index e0c79e02..cb38eb2c 100644
--- a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/CommercialPaper.java
+++ b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/CommercialPaper.java
@@ -1,6 +1,7 @@
/*
- * SPDX-License-Identifier: Apache-2.0
+ * SPDX-License-Identifier:
*/
+
package org.example;
import static java.nio.charset.StandardCharsets.UTF_8;
@@ -20,7 +21,7 @@ public class CommercialPaper extends State {
public final static String REDEEMED = "REDEEMED";
@Property()
- private String state ="";
+ private String state="";
public String getState() {
return state;
@@ -153,7 +154,6 @@ public class CommercialPaper extends State {
* @param {Buffer} data to form back into the object
*/
public static CommercialPaper deserialize(byte[] data) {
- System.out.println("Byte data is "+ new String(data, UTF_8));
JSONObject json = new JSONObject(new String(data, UTF_8));
String issuer = json.getString("issuer");
@@ -162,7 +162,7 @@ public class CommercialPaper extends State {
String maturityDateTime = json.getString("maturityDateTime");
String owner = json.getString("owner");
int faceValue = json.getInt("faceValue");
- String state = json.getString("state");
+ String state = json.getString("state");
return createInstance(issuer, paperNumber, issueDateTime, maturityDateTime, faceValue,owner,state);
}
@@ -179,4 +179,5 @@ public class CommercialPaper extends State {
.setFaceValue(faceValue).setKey().setIssueDateTime(issueDateTime).setOwner(owner).setState(state);
}
+
}
diff --git a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/CommercialPaperContext.java b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/CommercialPaperContext.java
similarity index 87%
rename from library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/CommercialPaperContext.java
rename to library-tracker/organization/cannavino/contract-java/src/main/java/org/example/CommercialPaperContext.java
index d7cb6812..7a946f2f 100644
--- a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/CommercialPaperContext.java
+++ b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/CommercialPaperContext.java
@@ -1,6 +1,3 @@
-/*
- * SPDX-License-Identifier: Apache-2.0
- */
package org.example;
import org.hyperledger.fabric.contract.Context;
diff --git a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/CommercialPaperContract.java b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/CommercialPaperContract.java
similarity index 99%
rename from library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/CommercialPaperContract.java
rename to library-tracker/organization/cannavino/contract-java/src/main/java/org/example/CommercialPaperContract.java
index add14dce..a75f47e3 100644
--- a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/CommercialPaperContract.java
+++ b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/CommercialPaperContract.java
@@ -3,7 +3,6 @@ SPDX-License-Identifier: Apache-2.0
*/
package org.example;
-
import java.util.logging.Logger;
import org.example.ledgerapi.State;
diff --git a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/PaperList.java b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/PaperList.java
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/PaperList.java
rename to library-tracker/organization/cannavino/contract-java/src/main/java/org/example/PaperList.java
diff --git a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/State.java b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/State.java
similarity index 97%
rename from library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/State.java
rename to library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/State.java
index 2bd37746..5e0a15b6 100644
--- a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/State.java
+++ b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/State.java
@@ -40,7 +40,6 @@ public class State {
*/
public static byte[] serialize(Object object) {
String jsonStr = new JSONObject(object).toString();
- System.out.println(jsonStr);
return jsonStr.getBytes(UTF_8);
}
diff --git a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java
similarity index 75%
rename from library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java
rename to library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java
index 1365f3c3..891788ea 100644
--- a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java
+++ b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java
@@ -1,7 +1,3 @@
-/*
-SPDX-License-Identifier: Apache-2.0
-*/
-
package org.example.ledgerapi;
@FunctionalInterface
diff --git a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/StateList.java b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/StateList.java
similarity index 97%
rename from library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/StateList.java
rename to library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/StateList.java
index b8ce97b2..d6725860 100644
--- a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/StateList.java
+++ b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/StateList.java
@@ -1,7 +1,3 @@
-
-/*
-SPDX-License-Identifier: Apache-2.0
-*/
package org.example.ledgerapi;
import org.example.ledgerapi.impl.StateListImpl;
diff --git a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java
similarity index 96%
rename from library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java
rename to library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java
index 4a04c88b..78a42933 100644
--- a/library-tracker/organization/magnetocorp/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java
+++ b/library-tracker/organization/cannavino/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java
@@ -1,7 +1,3 @@
-/*
-SPDX-License-Identifier: Apache-2.0
-*/
-
package org.example.ledgerapi.impl;
import java.util.Arrays;
@@ -13,6 +9,10 @@ import org.hyperledger.fabric.contract.Context;
import org.hyperledger.fabric.shim.ChaincodeStub;
import org.hyperledger.fabric.shim.ledger.CompositeKey;
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
/**
* StateList provides a named virtual container for a set of ledger states. Each
* state has a unique key which associates it with the container, rather than
@@ -74,8 +74,6 @@ public class StateListImpl implements StateList {
CompositeKey ledgerKey = this.ctx.getStub().createCompositeKey(this.name, State.splitKey(key));
byte[] data = this.ctx.getStub().getState(ledgerKey.toString());
- System.out.println("Data is "+data);
- System.out.println("LedgerKey "+ledgerKey.toString());
if (data != null) {
State state = this.deserializer.deserialize(data);
return state;
diff --git a/library-tracker/organization/magnetocorp/contract-java/src/test/java/org/hyperledger/fabric/DevRouter.java b/library-tracker/organization/cannavino/contract-java/src/test/java/org/hyperledger/fabric/DevRouter.java
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract-java/src/test/java/org/hyperledger/fabric/DevRouter.java
rename to library-tracker/organization/cannavino/contract-java/src/test/java/org/hyperledger/fabric/DevRouter.java
diff --git a/library-tracker/organization/magnetocorp/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java b/library-tracker/organization/cannavino/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java
similarity index 68%
rename from library-tracker/organization/magnetocorp/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java
rename to library-tracker/organization/cannavino/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java
index b8a27465..6a23b24f 100644
--- a/library-tracker/organization/magnetocorp/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java
+++ b/library-tracker/organization/cannavino/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java
@@ -1,6 +1,6 @@
/*
-SPDX-License-Identifier: Apache-2.0
-*/
+ * SPDX-License-Identifier: Apache License 2.0
+ */
package org.hyperledger.fabric.example;
@@ -39,4 +39,19 @@ public final class CommercialPaperContractTest {
return stub;
}
+ @Nested
+ class IssuePaper {
+// @Test
+// public void regularIssue() {
+// Response resp;
+// ChaincodeStub stub = newStub(new String[] { "issue", "issuerName", "paper001", "today", "year", "420" });
+// //
+//
+// resp = devRouter.invoke(stub);
+// assertThat(resp.getStatus()).isEqualTo(Status.SUCCESS);
+// assertThat(resp.getStringPayload()).isEqualTo("false");
+// }
+
+ }
+
}
\ No newline at end of file
diff --git a/library-tracker/organization/magnetocorp/contract/.editorconfig b/library-tracker/organization/cannavino/contract/.editorconfig
old mode 100755
new mode 100644
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/.editorconfig
rename to library-tracker/organization/cannavino/contract/.editorconfig
diff --git a/library-tracker/organization/magnetocorp/contract/.eslintignore b/library-tracker/organization/cannavino/contract/.eslintignore
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/.eslintignore
rename to library-tracker/organization/cannavino/contract/.eslintignore
diff --git a/library-tracker/organization/magnetocorp/contract/.eslintrc.js b/library-tracker/organization/cannavino/contract/.eslintrc.js
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/.eslintrc.js
rename to library-tracker/organization/cannavino/contract/.eslintrc.js
diff --git a/library-tracker/organization/magnetocorp/contract/.gitignore b/library-tracker/organization/cannavino/contract/.gitignore
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/.gitignore
rename to library-tracker/organization/cannavino/contract/.gitignore
diff --git a/library-tracker/organization/magnetocorp/contract/.npmignore b/library-tracker/organization/cannavino/contract/.npmignore
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/.npmignore
rename to library-tracker/organization/cannavino/contract/.npmignore
diff --git a/library-tracker/organization/magnetocorp/contract/index.js b/library-tracker/organization/cannavino/contract/index.js
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/index.js
rename to library-tracker/organization/cannavino/contract/index.js
diff --git a/library-tracker/organization/magnetocorp/contract/ledger-api/state.js b/library-tracker/organization/cannavino/contract/ledger-api/state.js
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/ledger-api/state.js
rename to library-tracker/organization/cannavino/contract/ledger-api/state.js
diff --git a/library-tracker/organization/magnetocorp/contract/ledger-api/statelist.js b/library-tracker/organization/cannavino/contract/ledger-api/statelist.js
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/ledger-api/statelist.js
rename to library-tracker/organization/cannavino/contract/ledger-api/statelist.js
diff --git a/library-tracker/organization/magnetocorp/contract/lib/paper.js b/library-tracker/organization/cannavino/contract/lib/paper.js
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/lib/paper.js
rename to library-tracker/organization/cannavino/contract/lib/paper.js
diff --git a/library-tracker/organization/magnetocorp/contract/lib/papercontract.js b/library-tracker/organization/cannavino/contract/lib/papercontract.js
similarity index 89%
rename from library-tracker/organization/magnetocorp/contract/lib/papercontract.js
rename to library-tracker/organization/cannavino/contract/lib/papercontract.js
index 0d6bccf0..4bbed909 100644
--- a/library-tracker/organization/magnetocorp/contract/lib/papercontract.js
+++ b/library-tracker/organization/cannavino/contract/lib/papercontract.js
@@ -52,23 +52,6 @@ class CommercialPaperContract extends Contract {
console.log('Instantiate the contract');
}
- /**
- * Get commercial paper
- * @param {Context} ctx the transaction context
- * @param {String} issuer commercial paper issuer
- * @param {Integer} paperNumber paper number for this issuer
- */
- async getPaper(ctx, issuer, paperNumber) {
- try {
- console.log('getPaper for: ' + issuer + ' ' + paperNumber);
- let paperKey = CommercialPaper.makeKey([issuer, paperNumber]);
- let paper = await ctx.paperList.getPaper(paperKey);
- return paper;
- } catch(e) {
- throw new Error('Paper: ' + paperNumber + 'absentfor' + issuer);
- }
- }
-
/**
* Issue commercial paper
*
diff --git a/library-tracker/organization/magnetocorp/contract/lib/paperlist.js b/library-tracker/organization/cannavino/contract/lib/paperlist.js
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/lib/paperlist.js
rename to library-tracker/organization/cannavino/contract/lib/paperlist.js
diff --git a/library-tracker/organization/magnetocorp/contract/package-lock.json b/library-tracker/organization/cannavino/contract/package-lock.json
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/package-lock.json
rename to library-tracker/organization/cannavino/contract/package-lock.json
diff --git a/library-tracker/organization/magnetocorp/contract/package.json b/library-tracker/organization/cannavino/contract/package.json
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/package.json
rename to library-tracker/organization/cannavino/contract/package.json
diff --git a/library-tracker/organization/magnetocorp/contract/test/contract.js b/library-tracker/organization/cannavino/contract/test/contract.js
similarity index 100%
rename from library-tracker/organization/magnetocorp/contract/test/contract.js
rename to library-tracker/organization/cannavino/contract/test/contract.js
diff --git a/library-tracker/organization/magnetocorp/gateway/networkConnection.yaml b/library-tracker/organization/cannavino/gateway/networkConnection.yaml
similarity index 100%
rename from library-tracker/organization/magnetocorp/gateway/networkConnection.yaml
rename to library-tracker/organization/cannavino/gateway/networkConnection.yaml
diff --git a/library-tracker/organization/magnetocorp/gateway/papernetConnection.yaml b/library-tracker/organization/cannavino/gateway/papernetConnection.yaml
similarity index 100%
rename from library-tracker/organization/magnetocorp/gateway/papernetConnection.yaml
rename to library-tracker/organization/cannavino/gateway/papernetConnection.yaml
diff --git a/library-tracker/organization/conrad-hilton/.gitignore b/library-tracker/organization/conrad-hilton/.gitignore
new file mode 100644
index 00000000..7d139014
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/.gitignore
@@ -0,0 +1 @@
+identity
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/application-java/.classpath b/library-tracker/organization/conrad-hilton/application-java/.classpath
new file mode 100644
index 00000000..149cb3c9
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application-java/.classpath
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/library-tracker/organization/conrad-hilton/application-java/.gitignore b/library-tracker/organization/conrad-hilton/application-java/.gitignore
new file mode 100644
index 00000000..2f7896d1
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application-java/.gitignore
@@ -0,0 +1 @@
+target/
diff --git a/library-tracker/organization/conrad-hilton/application-java/.settings/org.eclipse.jdt.core.prefs b/library-tracker/organization/conrad-hilton/application-java/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..b8947ec6
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application-java/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/library-tracker/organization/conrad-hilton/application-java/.settings/org.eclipse.m2e.core.prefs b/library-tracker/organization/conrad-hilton/application-java/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000..f897a7f1
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application-java/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/library-tracker/organization/conrad-hilton/application-java/dependency-reduced-pom.xml b/library-tracker/organization/conrad-hilton/application-java/dependency-reduced-pom.xml
new file mode 100644
index 00000000..17390c30
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application-java/dependency-reduced-pom.xml
@@ -0,0 +1,61 @@
+
+
+ 4.0.0
+ commercial-paper
+ commercial-paper
+ 0.0.1-SNAPSHOT
+
+ src
+
+
+ maven-compiler-plugin
+ 3.8.0
+
+ 1.8
+ 1.8
+
+
+
+ maven-shade-plugin
+ 3.2.0
+
+
+ package
+
+ shade
+
+
+
+
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+
+
+
+
+
+
+
+
+
+ hyperledger
+ Hyperledger Artifactory
+ https://hyperledger.jfrog.io/hyperledger/fabric-maven
+
+
+ jitpack.io
+ https://jitpack.io
+
+
+
+ 1.4.2
+ UTF-8
+ 1.8
+ UTF-8
+
+
diff --git a/library-tracker/organization/conrad-hilton/application-java/pom.xml b/library-tracker/organization/conrad-hilton/application-java/pom.xml
new file mode 100644
index 00000000..5cab62e8
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application-java/pom.xml
@@ -0,0 +1,99 @@
+
+ 4.0.0
+ commercial-paper
+ commercial-paper
+ 0.0.1-SNAPSHOT
+
+
+
+
+ 1.8
+ UTF-8
+ UTF-8
+
+
+ 1.4.2
+
+
+
+
+ src
+
+
+ maven-compiler-plugin
+ 3.8.0
+
+ 1.8
+ 1.8
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.2.0
+
+
+
+ package
+
+ shade
+
+
+
+
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+
+
+
+
+
+
+
+
+
+
+
+ hyperledger
+ Hyperledger Artifactory
+ https://hyperledger.jfrog.io/hyperledger/fabric-maven
+
+
+
+ jitpack.io
+ https://jitpack.io
+
+
+
+
+
+ org.hyperledger.fabric-gateway-java
+ fabric-gateway-java
+ 1.4.0-SNAPSHOT
+
+
+
+
+ org.hyperledger.fabric-chaincode-java
+ fabric-chaincode-shim
+ ${fabric-chaincode-java.version}
+ compile
+
+
+
+
+ org.json
+ json
+ 20180813
+
+
+
+
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/application-java/src/org/digibank/AddToWallet.java b/library-tracker/organization/conrad-hilton/application-java/src/org/digibank/AddToWallet.java
new file mode 100644
index 00000000..01ace5aa
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application-java/src/org/digibank/AddToWallet.java
@@ -0,0 +1,44 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package org.digibank;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.hyperledger.fabric.gateway.GatewayException;
+import org.hyperledger.fabric.gateway.Wallet;
+import org.hyperledger.fabric.gateway.Wallet.Identity;
+
+public class AddToWallet {
+
+ public static void main(String[] args) {
+ try {
+ // A wallet stores a collection of identities
+ Path walletPath = Paths.get("..", "identity", "user", "balaji", "wallet");
+ Wallet wallet = Wallet.createFileSystemWallet(walletPath);
+
+ // Location of credentials to be stored in the wallet
+ Path credentialPath = Paths.get("..", "..", "..", "..","basic-network", "crypto-config",
+ "peerOrganizations", "org1.example.com", "users", "Admin@org1.example.com", "msp");
+ Path certificatePem = credentialPath.resolve(Paths.get("signcerts",
+ "Admin@org1.example.com-cert.pem"));
+ Path privateKey = credentialPath.resolve(Paths.get("keystore",
+ "cd96d5260ad4757551ed4a5a991e62130f8008a0bf996e4e4b84cd097a747fec_sk"));
+
+ // Load credentials into wallet
+ String identityLabel = "Admin@org1.example.com";
+ Identity identity = Identity.createIdentity("Org1MSP", Files.newBufferedReader(certificatePem), Files.newBufferedReader(privateKey));
+
+ wallet.put(identityLabel, identity);
+
+ } catch (IOException e) {
+ System.err.println("Error adding to wallet");
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/library-tracker/organization/conrad-hilton/application-java/src/org/digibank/Buy.java b/library-tracker/organization/conrad-hilton/application-java/src/org/digibank/Buy.java
new file mode 100644
index 00000000..9e3710ed
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application-java/src/org/digibank/Buy.java
@@ -0,0 +1,72 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package org.digibank;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Map;
+import java.util.concurrent.TimeoutException;
+
+import org.hyperledger.fabric.gateway.Contract;
+import org.hyperledger.fabric.gateway.Gateway;
+import org.hyperledger.fabric.gateway.GatewayException;
+import org.hyperledger.fabric.gateway.Network;
+import org.hyperledger.fabric.gateway.Wallet;
+import org.papernet.CommercialPaper;
+
+public class Buy {
+
+ private static final String ENVKEY="CONTRACT_NAME";
+
+ public static void main(String[] args) {
+ Gateway.Builder builder = Gateway.createBuilder();
+
+ String contractName="papercontract";
+ // get the name of the contract, in case it is overridden
+ Map envvar = System.getenv();
+ if (envvar.containsKey(ENVKEY)){
+ contractName=envvar.get(ENVKEY);
+ }
+
+ try {
+ // A wallet stores a collection of identities
+ Path walletPath = Paths.get("..", "identity", "user", "balaji", "wallet");
+ Wallet wallet = Wallet.createFileSystemWallet(walletPath);
+
+ String userName = "Admin@org1.example.com";
+
+ Path connectionProfile = Paths.get("..", "gateway", "networkConnection.yaml");
+
+ // Set connection options on the gateway builder
+ builder.identity(wallet, userName).networkConfig(connectionProfile).discovery(false);
+
+ // Connect to gateway using application specified parameters
+ try(Gateway gateway = builder.connect()) {
+
+ // Access PaperNet network
+ System.out.println("Use network channel: mychannel.");
+ Network network = gateway.getNetwork("mychannel");
+
+ // Get addressability to commercial paper contract
+ System.out.println("Use org.papernet.commercialpaper smart contract.");
+ Contract contract = network.getContract(contractName, "org.papernet.commercialpaper");
+
+ // Buy commercial paper
+ System.out.println("Submit commercial paper buy transaction.");
+ byte[] response = contract.submitTransaction("buy", "MagnetoCorp", "00001", "MagnetoCorp", "DigiBank", "4900000", "2020-05-31");
+
+ // Process response
+ System.out.println("Process buy transaction response.");
+ CommercialPaper paper = CommercialPaper.deserialize(response);
+ System.out.println(paper);
+ }
+ } catch (GatewayException | IOException | TimeoutException | InterruptedException e) {
+ e.printStackTrace();
+ System.exit(-1);
+ }
+ }
+
+}
diff --git a/library-tracker/organization/conrad-hilton/application-java/src/org/digibank/Redeem.java b/library-tracker/organization/conrad-hilton/application-java/src/org/digibank/Redeem.java
new file mode 100644
index 00000000..b60b04c5
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application-java/src/org/digibank/Redeem.java
@@ -0,0 +1,72 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package org.digibank;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Map;
+import java.util.concurrent.TimeoutException;
+
+import org.hyperledger.fabric.gateway.Contract;
+import org.hyperledger.fabric.gateway.Gateway;
+import org.hyperledger.fabric.gateway.GatewayException;
+import org.hyperledger.fabric.gateway.Network;
+import org.hyperledger.fabric.gateway.Wallet;
+import org.papernet.CommercialPaper;
+
+public class Redeem {
+
+ private static final String ENVKEY="CONTRACT_NAME";
+
+ public static void main(String[] args) {
+ Gateway.Builder builder = Gateway.createBuilder();
+
+ String contractName="papercontract";
+ // get the name of the contract, in case it is overridden
+ Map envvar = System.getenv();
+ if (envvar.containsKey(ENVKEY)){
+ contractName=envvar.get(ENVKEY);
+ }
+
+ try {
+ // A wallet stores a collection of identities
+ Path walletPath = Paths.get("..", "identity", "user", "balaji", "wallet");
+ Wallet wallet = Wallet.createFileSystemWallet(walletPath);
+
+ String userName = "Admin@org1.example.com";
+
+ Path connectionProfile = Paths.get("..", "gateway", "networkConnection.yaml");
+
+ // Set connection options on the gateway builder
+ builder.identity(wallet, userName).networkConfig(connectionProfile).discovery(false);
+
+ // Connect to gateway using application specified parameters
+ try(Gateway gateway = builder.connect()) {
+
+ // Access PaperNet network
+ System.out.println("Use network channel: mychannel.");
+ Network network = gateway.getNetwork("mychannel");
+
+ // Get addressability to commercial paper contract
+ System.out.println("Use org.papernet.commercialpaper smart contract.");
+ Contract contract = network.getContract("papercontract", "org.papernet.commercialpaper");
+
+ // Redeem commercial paper
+ System.out.println("Submit commercial paper redeem transaction.");
+ byte[] response = contract.submitTransaction("redeem", "MagnetoCorp", "00001", "DigiBank", "2020-11-30");
+
+ // Process response
+ System.out.println("Process redeem transaction response.");
+ CommercialPaper paper = CommercialPaper.deserialize(response);
+ System.out.println(paper);
+ }
+ } catch (GatewayException | IOException | TimeoutException | InterruptedException e) {
+ e.printStackTrace();
+ System.exit(-1);
+ }
+ }
+
+}
diff --git a/library-tracker/organization/conrad-hilton/application-java/src/org/papernet/CommercialPaper.java b/library-tracker/organization/conrad-hilton/application-java/src/org/papernet/CommercialPaper.java
new file mode 100644
index 00000000..dbb4e3f1
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application-java/src/org/papernet/CommercialPaper.java
@@ -0,0 +1,181 @@
+/*
+ * SPDX-License-Identifier:
+ */
+
+package org.papernet;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import org.papernet.ledgerapi.State;
+import org.hyperledger.fabric.contract.annotation.DataType;
+import org.hyperledger.fabric.contract.annotation.Property;
+import org.json.JSONObject;
+import org.json.JSONPropertyIgnore;
+
+@DataType()
+public class CommercialPaper extends State {
+ // Enumerate commercial paper state values
+ public final static String ISSUED = "ISSUED";
+ public final static String TRADING = "TRADING";
+ public final static String REDEEMED = "REDEEMED";
+
+ @Property()
+ private String state="";
+
+ public String getState() {
+ return state;
+ }
+
+ public CommercialPaper setState(String state) {
+ this.state = state;
+ return this;
+ }
+
+ @JSONPropertyIgnore()
+ public boolean isIssued() {
+ return this.state.equals(CommercialPaper.ISSUED);
+ }
+
+ @JSONPropertyIgnore()
+ public boolean isTrading() {
+ return this.state.equals(CommercialPaper.TRADING);
+ }
+
+ @JSONPropertyIgnore()
+ public boolean isRedeemed() {
+ return this.state.equals(CommercialPaper.REDEEMED);
+ }
+
+ public CommercialPaper setIssued() {
+ this.state = CommercialPaper.ISSUED;
+ return this;
+ }
+
+ public CommercialPaper setTrading() {
+ this.state = CommercialPaper.TRADING;
+ return this;
+ }
+
+ public CommercialPaper setRedeemed() {
+ this.state = CommercialPaper.REDEEMED;
+ return this;
+ }
+
+ @Property()
+ private String paperNumber;
+
+ @Property()
+ private String issuer;
+
+ @Property()
+ private String issueDateTime;
+
+ @Property()
+ private int faceValue;
+
+ @Property()
+ private String maturityDateTime;
+
+ @Property()
+ private String owner;
+
+ public String getOwner() {
+ return owner;
+ }
+
+ public CommercialPaper setOwner(String owner) {
+ this.owner = owner;
+ return this;
+ }
+
+ public CommercialPaper() {
+ super();
+ }
+
+ public CommercialPaper setKey() {
+ this.key = State.makeKey(new String[] { this.paperNumber });
+ return this;
+ }
+
+ public String getPaperNumber() {
+ return paperNumber;
+ }
+
+ public CommercialPaper setPaperNumber(String paperNumber) {
+ this.paperNumber = paperNumber;
+ return this;
+ }
+
+ public String getIssuer() {
+ return issuer;
+ }
+
+ public CommercialPaper setIssuer(String issuer) {
+ this.issuer = issuer;
+ return this;
+ }
+
+ public String getIssueDateTime() {
+ return issueDateTime;
+ }
+
+ public CommercialPaper setIssueDateTime(String issueDateTime) {
+ this.issueDateTime = issueDateTime;
+ return this;
+ }
+
+ public int getFaceValue() {
+ return faceValue;
+ }
+
+ public CommercialPaper setFaceValue(int faceValue) {
+ this.faceValue = faceValue;
+ return this;
+ }
+
+ public String getMaturityDateTime() {
+ return maturityDateTime;
+ }
+
+ public CommercialPaper setMaturityDateTime(String maturityDateTime) {
+ this.maturityDateTime = maturityDateTime;
+ return this;
+ }
+
+ @Override
+ public String toString() {
+ return "Paper::" + this.key + " " + this.getPaperNumber() + " " + getIssuer() + " " + getFaceValue();
+ }
+
+ /**
+ * Deserialize a state data to commercial paper
+ *
+ * @param {Buffer} data to form back into the object
+ */
+ public static CommercialPaper deserialize(byte[] data) {
+ JSONObject json = new JSONObject(new String(data, UTF_8));
+
+ String issuer = json.getString("issuer");
+ String paperNumber = json.getString("paperNumber");
+ String issueDateTime = json.getString("issueDateTime");
+ String maturityDateTime = json.getString("maturityDateTime");
+ String owner = json.getString("owner");
+ int faceValue = json.getInt("faceValue");
+ String state = json.getString("state");
+ return createInstance(issuer, paperNumber, issueDateTime, maturityDateTime, faceValue,owner,state);
+ }
+
+ public static byte[] serialize(CommercialPaper paper) {
+ return State.serialize(paper);
+ }
+
+ /**
+ * Factory method to create a commercial paper object
+ */
+ public static CommercialPaper createInstance(String issuer, String paperNumber, String issueDateTime,
+ String maturityDateTime, int faceValue, String owner, String state) {
+ return new CommercialPaper().setIssuer(issuer).setPaperNumber(paperNumber).setMaturityDateTime(maturityDateTime)
+ .setFaceValue(faceValue).setKey().setIssueDateTime(issueDateTime).setOwner(owner).setState(state);
+ }
+
+}
diff --git a/library-tracker/organization/conrad-hilton/application-java/src/org/papernet/ledgerapi/State.java b/library-tracker/organization/conrad-hilton/application-java/src/org/papernet/ledgerapi/State.java
new file mode 100644
index 00000000..18158193
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application-java/src/org/papernet/ledgerapi/State.java
@@ -0,0 +1,60 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+package org.papernet.ledgerapi;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import org.json.JSONObject;
+
+/**
+ * State class. States have a class, unique key, and a lifecycle current state
+ * the current state is determined by the specific subclass
+ */
+public class State {
+
+ protected String key;
+
+ /**
+ * @param {String|Object} class An identifiable class of the instance
+ * @param {keyParts[]} elements to pull together to make a key for the objects
+ */
+ public State() {
+
+ }
+
+ String getKey() {
+ return this.key;
+ }
+
+ public String[] getSplitKey() {
+ return State.splitKey(this.key);
+ }
+
+ /**
+ * Convert object to buffer containing JSON data serialization Typically used
+ * before putState()ledger API
+ *
+ * @param {Object} JSON object to serialize
+ * @return {buffer} buffer with the data to store
+ */
+ public static byte[] serialize(Object object) {
+ String jsonStr = new JSONObject(object).toString();
+ return jsonStr.getBytes(UTF_8);
+ }
+
+ /**
+ * Join the keyParts to make a unififed string
+ *
+ * @param (String[]) keyParts
+ */
+ public static String makeKey(String[] keyParts) {
+ return String.join(":", keyParts);
+ }
+
+ public static String[] splitKey(String key) {
+ System.out.println("Splittin gkey " + key + " " + java.util.Arrays.asList(key.split(":")));
+ return key.split(":");
+ }
+
+}
diff --git a/library-tracker/organization/conrad-hilton/application/.eslintrc.js b/library-tracker/organization/conrad-hilton/application/.eslintrc.js
new file mode 100644
index 00000000..22fbefc8
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application/.eslintrc.js
@@ -0,0 +1,37 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+module.exports = {
+ env: {
+ node: true,
+ mocha: true
+ },
+ parserOptions: {
+ ecmaVersion: 8,
+ sourceType: 'script'
+ },
+ extends: "eslint:recommended",
+ rules: {
+ indent: ['error', 4],
+ 'linebreak-style': ['error', 'unix'],
+ quotes: ['error', 'single'],
+ semi: ['error', 'always'],
+ 'no-unused-vars': ['error', { args: 'none' }],
+ 'no-console': 'off',
+ curly: 'error',
+ eqeqeq: 'error',
+ 'no-throw-literal': 'error',
+ strict: 'error',
+ 'no-var': 'error',
+ 'dot-notation': 'error',
+ 'no-tabs': 'error',
+ 'no-trailing-spaces': 'error',
+ 'no-use-before-define': 'error',
+ 'no-useless-call': 'error',
+ 'no-with': 'error',
+ 'operator-linebreak': 'error',
+ yoda: 'error',
+ 'quote-props': ['error', 'as-needed']
+ }
+};
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/application/.gitignore b/library-tracker/organization/conrad-hilton/application/.gitignore
new file mode 100644
index 00000000..b512c09d
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application/.gitignore
@@ -0,0 +1 @@
+node_modules
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/application/addToWallet.js b/library-tracker/organization/conrad-hilton/application/addToWallet.js
new file mode 100644
index 00000000..b2b4415f
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application/addToWallet.js
@@ -0,0 +1,45 @@
+/*
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+'use strict';
+
+// Bring key classes into scope, most importantly Fabric SDK network class
+const fs = require('fs');
+const { FileSystemWallet, X509WalletMixin } = require('fabric-network');
+const path = require('path');
+
+const fixtures = path.resolve(__dirname, '../../../../basic-network');
+
+// A wallet stores a collection of identities
+const wallet = new FileSystemWallet('../identity/user/balaji/wallet');
+
+async function main() {
+
+ // Main try/catch block
+ try {
+
+ // Identity to credentials to be stored in the wallet
+ const credPath = path.join(fixtures, '/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com');
+ const cert = fs.readFileSync(path.join(credPath, '/msp/signcerts/Admin@org1.example.com-cert.pem')).toString();
+ const key = fs.readFileSync(path.join(credPath, '/msp/keystore/cd96d5260ad4757551ed4a5a991e62130f8008a0bf996e4e4b84cd097a747fec_sk')).toString();
+
+ // Load credentials into wallet
+ const identityLabel = 'Admin@org1.example.com';
+ const identity = X509WalletMixin.createIdentity('Org1MSP', cert, key);
+
+ await wallet.import(identityLabel, identity);
+
+ } catch (error) {
+ console.log(`Error adding to wallet. ${error}`);
+ console.log(error.stack);
+ }
+}
+
+main().then(() => {
+ console.log('done');
+}).catch((e) => {
+ console.log(e);
+ console.log(e.stack);
+ process.exit(-1);
+});
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/application/buy.js b/library-tracker/organization/conrad-hilton/application/buy.js
new file mode 100644
index 00000000..898be013
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application/buy.js
@@ -0,0 +1,102 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+/*
+ * This application has 6 basic steps:
+ * 1. Select an identity from a wallet
+ * 2. Connect to network gateway
+ * 3. Access PaperNet network
+ * 4. Construct request to issue commercial paper
+ * 5. Submit transaction
+ * 6. Process response
+ */
+
+'use strict';
+
+// Bring key classes into scope, most importantly Fabric SDK network class
+const fs = require('fs');
+const yaml = require('js-yaml');
+const { FileSystemWallet, Gateway } = require('fabric-network');
+const CommercialPaper = require('../../magnetocorp/contract/lib/paper.js');
+
+// A wallet stores a collection of identities for use
+const wallet = new FileSystemWallet('../identity/user/balaji/wallet');
+
+// Main program function
+async function main () {
+
+ // A gateway defines the peers used to access Fabric networks
+ const gateway = new Gateway();
+
+ // Main try/catch block
+ try {
+
+ // Specify userName for network access
+ // const userName = 'isabella.issuer@magnetocorp.com';
+ const userName = 'Admin@org1.example.com';
+
+ // Load connection profile; will be used to locate a gateway
+ let connectionProfile = yaml.safeLoad(fs.readFileSync('../gateway/networkConnection.yaml', 'utf8'));
+
+ // Set connection options; identity and wallet
+ let connectionOptions = {
+ identity: userName,
+ wallet: wallet,
+ discovery: { enabled: false, asLocalhost: true }
+
+ };
+
+ // Connect to gateway using application specified parameters
+ console.log('Connect to Fabric gateway.');
+
+ await gateway.connect(connectionProfile, connectionOptions);
+
+ // Access PaperNet network
+ console.log('Use network channel: mychannel.');
+
+ const network = await gateway.getNetwork('mychannel');
+
+ // Get addressability to commercial paper contract
+ console.log('Use org.papernet.commercialpaper smart contract.');
+
+ const contract = await network.getContract('papercontract', 'org.papernet.commercialpaper');
+
+ // buy commercial paper
+ console.log('Submit commercial paper buy transaction.');
+
+ const buyResponse = await contract.submitTransaction('buy', 'MagnetoCorp', '00001', 'MagnetoCorp', 'DigiBank', '4900000', '2020-05-31');
+
+ // process response
+ console.log('Process buy transaction response.');
+
+ let paper = CommercialPaper.fromBuffer(buyResponse);
+
+ console.log(`${paper.issuer} commercial paper : ${paper.paperNumber} successfully purchased by ${paper.owner}`);
+ console.log('Transaction complete.');
+
+ } catch (error) {
+
+ console.log(`Error processing transaction. ${error}`);
+ console.log(error.stack);
+
+ } finally {
+
+ // Disconnect from the gateway
+ console.log('Disconnect from Fabric gateway.');
+ gateway.disconnect();
+
+ }
+}
+main().then(() => {
+
+ console.log('Buy program complete.');
+
+}).catch((e) => {
+
+ console.log('Buy program exception.');
+ console.log(e);
+ console.log(e.stack);
+ process.exit(-1);
+
+});
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/application/getPaper.js b/library-tracker/organization/conrad-hilton/application/getPaper.js
new file mode 100644
index 00000000..de7e59d4
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application/getPaper.js
@@ -0,0 +1,101 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+/*
+ * This application has 6 basic steps:
+ * 1. Select an identity from a wallet
+ * 2. Connect to network gateway
+ * 3. Access PaperNet network
+ * 4. Construct request to query a commercial paper
+ * 5. Submit transaction
+ * 6. Process response
+ */
+'use strict';
+// Bring key classes into scope, most importantly Fabric SDK network class
+const fs = require('fs');
+const yaml = require('js-yaml');
+const { FileSystemWallet, Gateway } = require('fabric-network');
+const CommercialPaper = require('../contract/lib/paper.js');
+// A wallet stores a collection of identities for use
+const wallet = new FileSystemWallet('../identity/user/balaji/wallet');
+// Main program function
+async function main() {
+ // A gateway defines the peers used to access Fabric networks
+ const gateway = new Gateway();
+
+ // Main try/catch block
+ try {
+ // Specify userName for network access
+ // const userName = 'isabella.issuer@magnetocorp.com';
+ const userName = 'Admin@org1.example.com';
+ // Load connection profile; will be used to locate a gateway
+ let connectionProfile = yaml.safeLoad(fs.readFileSync('../gateway/networkConnection.yaml', 'utf8'));
+ // Set connection options; identity and wallet
+ let connectionOptions = {
+ identity: userName,
+ wallet: wallet,
+ discovery: { enabled:false, asLocalhost: true }
+ };
+
+ // Connect to gateway using application specified parameters
+ console.log('Connect to Fabric gateway.');
+ await gateway.connect(connectionProfile, connectionOptions);
+
+ // Access PaperNet network
+ console.log('Use network channel: mychannel.');
+ const network = await gateway.getNetwork('mychannel');
+
+ // Get addressability to commercial paper contract
+ console.log('Use org.papernet.commercialpaper smart contract.');
+ const contract = await network.getContract('papercontract', 'org.papernet.commercialpaper');
+
+ // get commercial paper
+ console.log('Submit commercial paper getPaper transaction.');
+ const getPaperResponse = await contract.evaluateTransaction('getPaper', 'MagnetoCorp', '00001');
+
+ // process response
+ console.log('Process getPaper transaction response.');
+ let paperJSON = JSON.parse(getPaperResponse);
+ let paper = CommercialPaper.createInstance(paperJSON.issuer, paperJSON.paperNumber, paperJSON.issueDateTime, paperJSON.maturityDateTime, paperJSON.faceValue);
+ paper.setOwner(paperJSON.owner);
+ paper.currentState = paperJSON.currentState;
+
+ // let paper = CommercialPaper.fromBuffer(getPaperResponse);
+ let paperState = 'Unknown';
+ if(paper.isIssued()) {
+ paperState = 'ISSUED';
+ } else if(paper.isTrading()){
+ paperState = 'TRADING';
+ } else if(paper.isRedeemed()){
+ paperState = 'REDEEMED';
+ }
+
+ console.log(` +--------- Paper Retrieved ---------+ `);
+ console.log(` | Paper number: "${paper.paperNumber}"`);
+ console.log(` | Paper is owned by: "${paper.owner}"`);
+ console.log(` | Paper is currently: "${paperState}"`);
+ console.log(` | Paper face value: "${paper.faceValue}"`);
+ console.log(` | Paper is issued by: "${paper.issuer}"`);
+ console.log(` | Paper issue on: "${paper.issueDateTime}"`);
+ console.log(` | Paper matures on: "${paper.maturityDateTime}"`);
+ console.log(` +-----------------------------------+ `);
+ console.log('Transaction complete.');
+
+ //console.log('Transaction complete.' + JSON.stringify(paper));
+ } catch (error) {
+ console.log(`Error processing transaction. ${error}`);
+ console.log(error.stack);
+ } finally {
+ // Disconnect from the gateway
+ console.log('Disconnect from Fabric gateway.')
+ gateway.disconnect();
+ }
+}
+main().then(() => {
+ console.log('getPaper program complete.');
+}).catch((e) => {
+ console.log('getPaper program exception.');
+ console.log(e);
+ console.log(e.stack);
+ process.exit(-1);
+});
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/application/package-lock.json b/library-tracker/organization/conrad-hilton/application/package-lock.json
new file mode 100644
index 00000000..f9e316a2
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application/package-lock.json
@@ -0,0 +1,2411 @@
+{
+ "name": "nodejs",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+ "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+ "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@types/bytebuffer": {
+ "version": "5.0.40",
+ "resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.40.tgz",
+ "integrity": "sha512-h48dyzZrPMz25K6Q4+NCwWaxwXany2FhQg/ErOcdZS1ZpsaDnDMZg8JYLMTGz7uvXKrcKGJUZJlZObyfgdaN9g==",
+ "requires": {
+ "@types/long": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/long": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz",
+ "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q=="
+ },
+ "@types/node": {
+ "version": "12.6.8",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz",
+ "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg=="
+ },
+ "acorn": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz",
+ "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz",
+ "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "ascli": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz",
+ "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=",
+ "requires": {
+ "colour": "~0.7.1",
+ "optjs": "~3.2.2"
+ }
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+ },
+ "aws4": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "bl": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
+ "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
+ "requires": {
+ "readable-stream": "^2.3.5",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA=="
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
+ },
+ "browser-request": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz",
+ "integrity": "sha1-ns5bWsqJopkyJC4Yv5M975h2zBc="
+ },
+ "buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "requires": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+ },
+ "buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
+ },
+ "bytebuffer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz",
+ "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=",
+ "requires": {
+ "long": "~3"
+ },
+ "dependencies": {
+ "long": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
+ "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s="
+ }
+ }
+ },
+ "callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "cloudant-follow": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/cloudant-follow/-/cloudant-follow-0.17.0.tgz",
+ "integrity": "sha512-JQ1xvKAHh8rsnSVBjATLCjz/vQw1sWBGadxr2H69yFMwD7hShUGDwwEefdypaxroUJ/w6t1cSwilp/hRUxEW8w==",
+ "requires": {
+ "browser-request": "~0.3.0",
+ "debug": "^3.0.0",
+ "request": "^2.83.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ }
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
+ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs="
+ },
+ "colour": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz",
+ "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g="
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "cycle": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
+ "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI="
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "elliptic": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz",
+ "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==",
+ "requires": {
+ "bn.js": "^4.4.0",
+ "brorand": "^1.0.1",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "errs": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/errs/-/errs-0.3.2.tgz",
+ "integrity": "sha1-eYCZstvTfKK8dJ5TinwTB9C1BJk="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "eslint": {
+ "version": "5.16.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz",
+ "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.9.1",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^4.0.3",
+ "eslint-utils": "^1.3.1",
+ "eslint-visitor-keys": "^1.0.0",
+ "espree": "^5.0.1",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob": "^7.1.2",
+ "globals": "^11.7.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^6.2.2",
+ "js-yaml": "^3.13.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.11",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "path-is-inside": "^1.0.2",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^5.5.1",
+ "strip-ansi": "^4.0.0",
+ "strip-json-comments": "^2.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz",
+ "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.0.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz",
+ "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
+ "dev": true,
+ "requires": {
+ "acorn": "^6.0.7",
+ "acorn-jsx": "^5.0.0",
+ "eslint-visitor-keys": "^1.0.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.0.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ },
+ "eyes": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
+ "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A="
+ },
+ "fabric-ca-client": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/fabric-ca-client/-/fabric-ca-client-1.4.4.tgz",
+ "integrity": "sha512-lhs/ywszaatqCPObJx/884nGT4i3XWPqF/GKAhIoTfMWk5hXWoOliaV1pCbfkT6BVQMgYaoyx+k8hl+TiBlsDw==",
+ "requires": {
+ "@types/bytebuffer": "^5.0.34",
+ "bn.js": "^4.11.3",
+ "elliptic": "^6.2.3",
+ "fs-extra": "^6.0.1",
+ "grpc": "1.21.1",
+ "js-sha3": "^0.7.0",
+ "jsrsasign": "^7.2.2",
+ "jssha": "^2.1.0",
+ "long": "^4.0.0",
+ "nconf": "^0.10.0",
+ "sjcl": "1.0.7",
+ "url": "^0.11.0",
+ "util": "^0.10.3",
+ "winston": "^2.2.0"
+ }
+ },
+ "fabric-client": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/fabric-client/-/fabric-client-1.4.4.tgz",
+ "integrity": "sha512-QIC9dFCmQN5pWx23CoWq8cJTYwChXB7kEoZbpls5xPZaXtwNnvwBdbVWT+E0qwZQkhpLYe8y3N/A6jC5X3Cqtw==",
+ "requires": {
+ "@types/bytebuffer": "^5.0.34",
+ "bn.js": "^4.11.3",
+ "callsite": "^1.0.0",
+ "elliptic": "^6.2.3",
+ "fabric-ca-client": "^1.4.4",
+ "fs-extra": "^6.0.1",
+ "grpc": "1.21.1",
+ "hoek": "^4.2.1",
+ "ignore-walk": "^3.0.0",
+ "js-sha3": "^0.7.0",
+ "js-yaml": "^3.9.0",
+ "jsrsasign": "^7.2.2",
+ "jssha": "^2.1.0",
+ "klaw": "^2.0.0",
+ "long": "^4.0.0",
+ "nano": "^6.4.4",
+ "nconf": "^0.10.0",
+ "pkcs11js": "^1.0.6",
+ "promise-settle": "^0.3.0",
+ "protobufjs": "5.0.3",
+ "sjcl": "1.0.7",
+ "stream-buffers": "3.0.1",
+ "tar-stream": "1.6.1",
+ "url": "^0.11.0",
+ "winston": "^2.2.0"
+ }
+ },
+ "fabric-network": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/fabric-network/-/fabric-network-1.4.4.tgz",
+ "integrity": "sha512-RMe9sq1jEfOrvxvW+cjPr2E88VMrg32yJHVI/K7pfObokwy955pzI24mnZbwTomyS8Vci66XmZLC24XeSYX/Mw==",
+ "requires": {
+ "fabric-ca-client": "^1.4.4",
+ "fabric-client": "^1.4.4",
+ "nano": "^6.4.4",
+ "rimraf": "^2.6.2",
+ "uuid": "^3.2.1"
+ },
+ "dependencies": {
+ "fabric-client": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/fabric-client/-/fabric-client-1.4.4.tgz",
+ "integrity": "sha512-QIC9dFCmQN5pWx23CoWq8cJTYwChXB7kEoZbpls5xPZaXtwNnvwBdbVWT+E0qwZQkhpLYe8y3N/A6jC5X3Cqtw==",
+ "requires": {
+ "@types/bytebuffer": "^5.0.34",
+ "bn.js": "^4.11.3",
+ "callsite": "^1.0.0",
+ "elliptic": "^6.2.3",
+ "fabric-ca-client": "^1.4.4",
+ "fs-extra": "^6.0.1",
+ "grpc": "1.21.1",
+ "hoek": "^4.2.1",
+ "ignore-walk": "^3.0.0",
+ "js-sha3": "^0.7.0",
+ "js-yaml": "^3.9.0",
+ "jsrsasign": "^7.2.2",
+ "jssha": "^2.1.0",
+ "klaw": "^2.0.0",
+ "long": "^4.0.0",
+ "nano": "^6.4.4",
+ "nconf": "^0.10.0",
+ "pkcs11js": "^1.0.6",
+ "promise-settle": "^0.3.0",
+ "protobufjs": "5.0.3",
+ "sjcl": "1.0.7",
+ "stream-buffers": "3.0.1",
+ "tar-stream": "1.6.1",
+ "url": "^0.11.0",
+ "winston": "^2.2.0"
+ }
+ }
+ }
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ }
+ },
+ "flatted": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
+ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ },
+ "form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+ },
+ "fs-extra": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
+ "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
+ "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg=="
+ },
+ "grpc": {
+ "version": "1.21.1",
+ "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.21.1.tgz",
+ "integrity": "sha512-PFsZQazf62nP05a0xm23mlImMuw5oVlqF/0zakmsdqJgvbABe+d6VThY2PfhqJmWEL/FhQ6QNYsxS5EAM6++7g==",
+ "requires": {
+ "lodash.camelcase": "^4.3.0",
+ "lodash.clone": "^4.5.0",
+ "nan": "^2.13.2",
+ "node-pre-gyp": "^0.13.0",
+ "protobufjs": "^5.0.3"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "bundled": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true
+ },
+ "iconv-lite": {
+ "version": "0.4.23",
+ "bundled": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "bundled": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true
+ }
+ }
+ },
+ "needle": {
+ "version": "2.3.1",
+ "bundled": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "bundled": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "bundled": true
+ }
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.13.0",
+ "bundled": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.6",
+ "bundled": true
+ },
+ "npm-packlist": {
+ "version": "1.4.1",
+ "bundled": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "bundled": true,
+ "requires": {
+ "glob": "^7.1.3"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.4",
+ "bundled": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "bundled": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "bundled": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "bundled": true
+ }
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+ },
+ "har-validator": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
+ "requires": {
+ "ajv": "^6.5.5",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "hoek": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
+ "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA=="
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
+ "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "import-fresh": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz",
+ "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+ },
+ "inquirer": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz",
+ "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.2.0",
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^2.0.0",
+ "lodash": "^4.17.12",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.4.0",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^5.1.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
+ "js-sha3": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.7.0.tgz",
+ "integrity": "sha512-Wpks3yBDm0UcL5qlVhwW9Jr9n9i4FfeWBFOOXP5puDS/SiudJGhw7DPyBqn3487qD4F0lsC0q3zxink37f7zeA=="
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "jsrsasign": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-7.2.2.tgz",
+ "integrity": "sha1-rlIwy1V0RRu5eanMaXQoxg9ZjSA="
+ },
+ "jssha": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/jssha/-/jssha-2.3.1.tgz",
+ "integrity": "sha1-FHshJTaQNcpLL30hDcU58Amz3po="
+ },
+ "klaw": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.1.1.tgz",
+ "integrity": "sha1-QrdolHARacyRD9DRnOZ3tfs3ivE=",
+ "requires": {
+ "graceful-fs": "^4.1.9"
+ }
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+ "dev": true
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
+ },
+ "lodash.clone": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
+ "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
+ },
+ "lodash.isempty": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
+ "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4="
+ },
+ "long": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
+ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
+ },
+ "mime-db": {
+ "version": "1.40.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
+ "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
+ },
+ "mime-types": {
+ "version": "2.1.24",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
+ "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
+ "requires": {
+ "mime-db": "1.40.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+ "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
+ },
+ "nano": {
+ "version": "6.4.4",
+ "resolved": "https://registry.npmjs.org/nano/-/nano-6.4.4.tgz",
+ "integrity": "sha512-7sldMrZI1ZH8QE29PnzohxLfR67WNVzMKLa7EMl3x9Hr+0G+YpOUCq50qZ9G66APrjcb0Of2BTOZLNBCutZGag==",
+ "requires": {
+ "cloudant-follow": "~0.17.0",
+ "debug": "^2.2.0",
+ "errs": "^0.3.2",
+ "lodash.isempty": "^4.4.0",
+ "request": "^2.85.0"
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "nconf": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.10.0.tgz",
+ "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==",
+ "requires": {
+ "async": "^1.4.0",
+ "ini": "^1.3.0",
+ "secure-keys": "^1.0.0",
+ "yargs": "^3.19.0"
+ }
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.4",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "wordwrap": "~1.0.0"
+ }
+ },
+ "optjs": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz",
+ "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4="
+ },
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "requires": {
+ "lcid": "^1.0.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
+ "pkcs11js": {
+ "version": "1.0.18",
+ "resolved": "https://registry.npmjs.org/pkcs11js/-/pkcs11js-1.0.18.tgz",
+ "integrity": "sha512-1MYcEAPhy+T1NbiBUw0WwllKXC0sxDCRQGLsks7AtFsaf88F/f+ukdSmCqV3Xyc0RNLIdTX/soy0zyNHOWQezw==",
+ "requires": {
+ "nan": "^2.14.0"
+ }
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "promise-settle": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/promise-settle/-/promise-settle-0.3.0.tgz",
+ "integrity": "sha1-tO/VcqHrdM95T4KM00naQKCOTpY="
+ },
+ "protobufjs": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz",
+ "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==",
+ "requires": {
+ "ascli": "~1",
+ "bytebuffer": "~5",
+ "glob": "^7.0.5",
+ "yargs": "^3.10.0"
+ }
+ },
+ "psl": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz",
+ "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA=="
+ },
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true
+ },
+ "request": {
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "^2.1.0"
+ }
+ },
+ "rxjs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz",
+ "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
+ "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "secure-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz",
+ "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o="
+ },
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "sjcl": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/sjcl/-/sjcl-1.0.7.tgz",
+ "integrity": "sha1-MrNlpQ3Ju6JriLo8nfjqNCF9n0U="
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ }
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+ },
+ "sshpk": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
+ },
+ "stream-buffers": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.1.tgz",
+ "integrity": "sha1-aKOMX6re3tef95mI02jj+xMl7wY="
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "table": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.4.tgz",
+ "integrity": "sha512-IIfEAUx5QlODLblLrGTTLJA7Tk0iLSGBvgY8essPRVNGHAzThujww1YqHLs6h3HfTg55h++RzLHH5Xw/rfv+mg==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "tar-stream": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz",
+ "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==",
+ "requires": {
+ "bl": "^1.0.0",
+ "buffer-alloc": "^1.1.0",
+ "end-of-stream": "^1.0.0",
+ "fs-constants": "^1.0.0",
+ "readable-stream": "^2.3.0",
+ "to-buffer": "^1.1.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "to-buffer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+ "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ }
+ }
+ },
+ "tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "requires": {
+ "punycode": "^2.1.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ }
+ }
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ }
+ },
+ "util": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+ "requires": {
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "window-size": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
+ "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY="
+ },
+ "winston": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.4.tgz",
+ "integrity": "sha512-NBo2Pepn4hK4V01UfcWcDlmiVTs7VTB1h7bgnB0rgP146bYhMxX0ypCz3lBOfNxCO4Zuek7yeT+y/zM1OfMw4Q==",
+ "requires": {
+ "async": "~1.0.0",
+ "colors": "1.0.x",
+ "cycle": "1.0.x",
+ "eyes": "0.1.x",
+ "isstream": "0.1.x",
+ "stack-trace": "0.0.x"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
+ "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k="
+ }
+ }
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
+ },
+ "yargs": {
+ "version": "3.32.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
+ "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
+ "requires": {
+ "camelcase": "^2.0.1",
+ "cliui": "^3.0.3",
+ "decamelize": "^1.1.1",
+ "os-locale": "^1.4.0",
+ "string-width": "^1.0.1",
+ "window-size": "^0.1.4",
+ "y18n": "^3.2.0"
+ }
+ }
+ }
+}
diff --git a/library-tracker/organization/conrad-hilton/application/package.json b/library-tracker/organization/conrad-hilton/application/package.json
new file mode 100644
index 00000000..3655349d
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "nodejs",
+ "version": "1.0.0",
+ "description": "",
+ "main": "buy.js",
+ "scripts": {
+ "lint": "eslint .",
+ "test": "rm -rf _idwallet && node addToWallet.js && node buy.js"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "fabric-network": "~1.4.0",
+ "fabric-client": "~1.4.0",
+ "js-yaml": "^3.12.0"
+ },
+ "devDependencies": {
+ "eslint": "^5.6.0"
+ }
+}
diff --git a/library-tracker/organization/conrad-hilton/application/redeem.js b/library-tracker/organization/conrad-hilton/application/redeem.js
new file mode 100644
index 00000000..b13f695c
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/application/redeem.js
@@ -0,0 +1,101 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+/*
+ * This application has 6 basic steps:
+ * 1. Select an identity from a wallet
+ * 2. Connect to network gateway
+ * 3. Access PaperNet network
+ * 4. Construct request to issue commercial paper
+ * 5. Submit transaction
+ * 6. Process response
+ */
+
+'use strict';
+
+// Bring key classes into scope, most importantly Fabric SDK network class
+const fs = require('fs');
+const yaml = require('js-yaml');
+const { FileSystemWallet, Gateway } = require('fabric-network');
+const CommercialPaper = require('../contract/lib/paper.js');
+
+// A wallet stores a collection of identities for use
+const wallet = new FileSystemWallet('../identity/user/balaji/wallet');
+
+// Main program function
+async function main() {
+
+ // A gateway defines the peers used to access Fabric networks
+ const gateway = new Gateway();
+
+ // Main try/catch block
+ try {
+
+ // Specify userName for network access
+ // const userName = 'isabella.issuer@magnetocorp.com';
+ const userName = 'Admin@org1.example.com';
+
+ // Load connection profile; will be used to locate a gateway
+ let connectionProfile = yaml.safeLoad(fs.readFileSync('../gateway/networkConnection.yaml', 'utf8'));
+
+ // Set connection options; identity and wallet
+ let connectionOptions = {
+ identity: userName,
+ wallet: wallet,
+ discovery: { enabled:false, asLocalhost: true }
+ };
+
+ // Connect to gateway using application specified parameters
+ console.log('Connect to Fabric gateway.');
+
+ await gateway.connect(connectionProfile, connectionOptions);
+
+ // Access PaperNet network
+ console.log('Use network channel: mychannel.');
+
+ const network = await gateway.getNetwork('mychannel');
+
+ // Get addressability to commercial paper contract
+ console.log('Use org.papernet.commercialpaper smart contract.');
+
+ const contract = await network.getContract('papercontract', 'org.papernet.commercialpaper');
+
+ // redeem commercial paper
+ console.log('Submit commercial paper redeem transaction.');
+
+ const redeemResponse = await contract.submitTransaction('redeem', 'MagnetoCorp', '00001', 'DigiBank', '2020-11-30');
+
+ // process response
+ console.log('Process redeem transaction response.');
+
+ let paper = CommercialPaper.fromBuffer(redeemResponse);
+
+ console.log(`${paper.issuer} commercial paper : ${paper.paperNumber} successfully redeemed with ${paper.owner}`);
+ console.log('Transaction complete.');
+
+ } catch (error) {
+
+ console.log(`Error processing transaction. ${error}`);
+ console.log(error.stack);
+
+ } finally {
+
+ // Disconnect from the gateway
+ console.log('Disconnect from Fabric gateway.');
+ gateway.disconnect();
+
+ }
+}
+main().then(() => {
+
+ console.log('Redeem program complete.');
+
+}).catch((e) => {
+
+ console.log('Redeem program exception.');
+ console.log(e);
+ console.log(e.stack);
+ process.exit(-1);
+
+});
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/configuration/cli/cd b/library-tracker/organization/conrad-hilton/configuration/cli/cd
new file mode 100644
index 00000000..109a7b4a
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/configuration/cli/cd
@@ -0,0 +1 @@
+Suggest that you change to this dir /home/matthew/go/src/github.com/hyperledger/fabric-samples/commercial-paper/organization/digibank
diff --git a/library-tracker/organization/conrad-hilton/configuration/cli/docker-compose.yml b/library-tracker/organization/conrad-hilton/configuration/cli/docker-compose.yml
new file mode 100644
index 00000000..434b2a96
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/configuration/cli/docker-compose.yml
@@ -0,0 +1,38 @@
+#
+# Copyright IBM Corp All Rights Reserved
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+version: '2'
+
+networks:
+ basic:
+ external:
+ name: net_basic
+
+services:
+ cliDigiBank:
+ container_name: cliDigiBank
+ image: hyperledger/fabric-tools
+ tty: true
+ environment:
+ - GOPATH=/opt/gopath
+ - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
+ - FABRIC_LOGGING_SPEC=info
+ - CORE_PEER_ID=cli
+ - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
+ - CORE_PEER_LOCALMSPID=Org1MSP
+ - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
+ - CORE_CHAINCODE_KEEPALIVE=10
+ working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
+ command: /bin/bash
+ volumes:
+ - /var/run/:/host/var/run/
+ - ./../../../../organization/digibank:/opt/gopath/src/github.com/
+ - ./../../../../../basic-network/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
+ networks:
+ - basic
+ #depends_on:
+ # - orderer.example.com
+ # - peer0.org1.example.com
+ # - couchdb
diff --git a/library-tracker/organization/conrad-hilton/configuration/cli/monitordocker.sh b/library-tracker/organization/conrad-hilton/configuration/cli/monitordocker.sh
new file mode 100644
index 00000000..2cf82fbd
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/configuration/cli/monitordocker.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# This script uses the logspout and http stream tools to let you watch the docker containers
+# in action.
+#
+# More information at https://github.com/gliderlabs/logspout/tree/master/httpstream
+
+if [ -z "$1" ]; then
+ DOCKER_NETWORK=basicnetwork_basic
+else
+ DOCKER_NETWORK="$1"
+fi
+
+if [ -z "$2" ]; then
+ PORT=8000
+else
+ PORT="$2"
+fi
+
+echo Starting monitoring on all containers on the network ${DOCKER_NETWORK}
+
+docker kill logspout 2> /dev/null 1>&2 || true
+docker rm logspout 2> /dev/null 1>&2 || true
+
+docker run -d --name="logspout" \
+ --volume=/var/run/docker.sock:/var/run/docker.sock \
+ --publish=127.0.0.1:${PORT}:80 \
+ --network ${DOCKER_NETWORK} \
+ gliderlabs/logspout
+sleep 3
+curl http://127.0.0.1:${PORT}/logs
diff --git a/library-tracker/organization/conrad-hilton/contract-java/.gitignore b/library-tracker/organization/conrad-hilton/contract-java/.gitignore
new file mode 100644
index 00000000..73d55ace
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/.gitignore
@@ -0,0 +1,5 @@
+.gradle/
+build/
+bin/
+.classpath
+.settings/
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/contract-java/build.gradle b/library-tracker/organization/conrad-hilton/contract-java/build.gradle
new file mode 100644
index 00000000..04626aec
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/build.gradle
@@ -0,0 +1,51 @@
+plugins {
+ id 'com.github.johnrengelman.shadow' version '2.0.3'
+ id 'java'
+}
+
+version '0.0.1'
+
+sourceCompatibility = 1.8
+
+repositories {
+
+ mavenLocal()
+ mavenCentral()
+ maven {
+ url 'https://jitpack.io'
+ }
+ maven {
+ url "https://hyperledger.jfrog.io/hyperledger/fabric-maven"
+ }
+
+}
+
+dependencies {
+ compile group: 'org.hyperledger.fabric-chaincode-java', name: 'fabric-chaincode-shim', version: '1.4.2'
+ compile group: 'org.json', name: 'json', version: '20180813'
+ testImplementation 'org.junit.jupiter:junit-jupiter:5.4.2'
+ testImplementation 'org.assertj:assertj-core:3.11.1'
+ testImplementation 'org.mockito:mockito-core:2.+'
+}
+
+shadowJar {
+ baseName = 'chaincode'
+ version = null
+ classifier = null
+
+ manifest {
+ attributes 'Main-Class': 'org.hyperledger.fabric.contract.ContractRouter'
+ }
+}
+
+test {
+ useJUnitPlatform()
+ testLogging {
+ events "passed", "skipped", "failed"
+ }
+}
+
+
+tasks.withType(JavaCompile) {
+ options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" << "-parameters"
+}
diff --git a/library-tracker/organization/conrad-hilton/contract-java/gradle/wrapper/gradle-wrapper.jar b/library-tracker/organization/conrad-hilton/contract-java/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/library-tracker/organization/conrad-hilton/contract-java/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/library-tracker/organization/conrad-hilton/contract-java/gradle/wrapper/gradle-wrapper.properties b/library-tracker/organization/conrad-hilton/contract-java/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..bf3de218
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/library-tracker/organization/conrad-hilton/contract-java/gradlew b/library-tracker/organization/conrad-hilton/contract-java/gradlew
new file mode 100644
index 00000000..cccdd3d5
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/library-tracker/organization/conrad-hilton/contract-java/gradlew.bat b/library-tracker/organization/conrad-hilton/contract-java/gradlew.bat
new file mode 100644
index 00000000..f9553162
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/library-tracker/organization/conrad-hilton/contract-java/settings.gradle b/library-tracker/organization/conrad-hilton/contract-java/settings.gradle
new file mode 100644
index 00000000..343bba0d
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = 'java-contractcontract'
+
diff --git a/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/CommercialPaper.java b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/CommercialPaper.java
new file mode 100644
index 00000000..cb38eb2c
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/CommercialPaper.java
@@ -0,0 +1,183 @@
+/*
+ * SPDX-License-Identifier:
+ */
+
+package org.example;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import org.example.ledgerapi.State;
+import org.hyperledger.fabric.contract.annotation.DataType;
+import org.hyperledger.fabric.contract.annotation.Property;
+import org.json.JSONObject;
+import org.json.JSONPropertyIgnore;
+
+@DataType()
+public class CommercialPaper extends State {
+
+ // Enumerate commercial paper state values
+ public final static String ISSUED = "ISSUED";
+ public final static String TRADING = "TRADING";
+ public final static String REDEEMED = "REDEEMED";
+
+ @Property()
+ private String state="";
+
+ public String getState() {
+ return state;
+ }
+
+ public CommercialPaper setState(String state) {
+ this.state = state;
+ return this;
+ }
+
+ @JSONPropertyIgnore()
+ public boolean isIssued() {
+ return this.state.equals(CommercialPaper.ISSUED);
+ }
+
+ @JSONPropertyIgnore()
+ public boolean isTrading() {
+ return this.state.equals(CommercialPaper.TRADING);
+ }
+
+ @JSONPropertyIgnore()
+ public boolean isRedeemed() {
+ return this.state.equals(CommercialPaper.REDEEMED);
+ }
+
+ public CommercialPaper setIssued() {
+ this.state = CommercialPaper.ISSUED;
+ return this;
+ }
+
+ public CommercialPaper setTrading() {
+ this.state = CommercialPaper.TRADING;
+ return this;
+ }
+
+ public CommercialPaper setRedeemed() {
+ this.state = CommercialPaper.REDEEMED;
+ return this;
+ }
+
+ @Property()
+ private String paperNumber;
+
+ @Property()
+ private String issuer;
+
+ @Property()
+ private String issueDateTime;
+
+ @Property()
+ private int faceValue;
+
+ @Property()
+ private String maturityDateTime;
+
+ @Property()
+ private String owner;
+
+ public String getOwner() {
+ return owner;
+ }
+
+ public CommercialPaper setOwner(String owner) {
+ this.owner = owner;
+ return this;
+ }
+
+ public CommercialPaper() {
+ super();
+ }
+
+ public CommercialPaper setKey() {
+ this.key = State.makeKey(new String[] { this.paperNumber });
+ return this;
+ }
+
+ public String getPaperNumber() {
+ return paperNumber;
+ }
+
+ public CommercialPaper setPaperNumber(String paperNumber) {
+ this.paperNumber = paperNumber;
+ return this;
+ }
+
+ public String getIssuer() {
+ return issuer;
+ }
+
+ public CommercialPaper setIssuer(String issuer) {
+ this.issuer = issuer;
+ return this;
+ }
+
+ public String getIssueDateTime() {
+ return issueDateTime;
+ }
+
+ public CommercialPaper setIssueDateTime(String issueDateTime) {
+ this.issueDateTime = issueDateTime;
+ return this;
+ }
+
+ public int getFaceValue() {
+ return faceValue;
+ }
+
+ public CommercialPaper setFaceValue(int faceValue) {
+ this.faceValue = faceValue;
+ return this;
+ }
+
+ public String getMaturityDateTime() {
+ return maturityDateTime;
+ }
+
+ public CommercialPaper setMaturityDateTime(String maturityDateTime) {
+ this.maturityDateTime = maturityDateTime;
+ return this;
+ }
+
+ @Override
+ public String toString() {
+ return "Paper::" + this.key + " " + this.getPaperNumber() + " " + getIssuer() + " " + getFaceValue();
+ }
+
+ /**
+ * Deserialize a state data to commercial paper
+ *
+ * @param {Buffer} data to form back into the object
+ */
+ public static CommercialPaper deserialize(byte[] data) {
+ JSONObject json = new JSONObject(new String(data, UTF_8));
+
+ String issuer = json.getString("issuer");
+ String paperNumber = json.getString("paperNumber");
+ String issueDateTime = json.getString("issueDateTime");
+ String maturityDateTime = json.getString("maturityDateTime");
+ String owner = json.getString("owner");
+ int faceValue = json.getInt("faceValue");
+ String state = json.getString("state");
+ return createInstance(issuer, paperNumber, issueDateTime, maturityDateTime, faceValue,owner,state);
+ }
+
+ public static byte[] serialize(CommercialPaper paper) {
+ return State.serialize(paper);
+ }
+
+ /**
+ * Factory method to create a commercial paper object
+ */
+ public static CommercialPaper createInstance(String issuer, String paperNumber, String issueDateTime,
+ String maturityDateTime, int faceValue, String owner, String state) {
+ return new CommercialPaper().setIssuer(issuer).setPaperNumber(paperNumber).setMaturityDateTime(maturityDateTime)
+ .setFaceValue(faceValue).setKey().setIssueDateTime(issueDateTime).setOwner(owner).setState(state);
+ }
+
+
+}
diff --git a/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/CommercialPaperContext.java b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/CommercialPaperContext.java
new file mode 100644
index 00000000..7a946f2f
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/CommercialPaperContext.java
@@ -0,0 +1,15 @@
+package org.example;
+
+import org.hyperledger.fabric.contract.Context;
+import org.hyperledger.fabric.shim.ChaincodeStub;
+
+class CommercialPaperContext extends Context {
+
+ public CommercialPaperContext(ChaincodeStub stub) {
+ super(stub);
+ this.paperList = new PaperList(this);
+ }
+
+ public PaperList paperList;
+
+}
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/CommercialPaperContract.java b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/CommercialPaperContract.java
new file mode 100644
index 00000000..a75f47e3
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/CommercialPaperContract.java
@@ -0,0 +1,170 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+package org.example;
+
+import java.util.logging.Logger;
+
+import org.example.ledgerapi.State;
+import org.hyperledger.fabric.contract.Context;
+import org.hyperledger.fabric.contract.ContractInterface;
+import org.hyperledger.fabric.contract.annotation.Contact;
+import org.hyperledger.fabric.contract.annotation.Contract;
+import org.hyperledger.fabric.contract.annotation.Default;
+import org.hyperledger.fabric.contract.annotation.Info;
+import org.hyperledger.fabric.contract.annotation.License;
+import org.hyperledger.fabric.contract.annotation.Transaction;
+import org.hyperledger.fabric.shim.ChaincodeStub;
+
+/**
+ * A custom context provides easy access to list of all commercial papers
+ */
+
+/**
+ * Define commercial paper smart contract by extending Fabric Contract class
+ *
+ */
+@Contract(name = "org.papernet.commercialpaper", info = @Info(title = "MyAsset contract", description = "", version = "0.0.1", license = @License(name = "SPDX-License-Identifier: ", url = ""), contact = @Contact(email = "java-contract@example.com", name = "java-contract", url = "http://java-contract.me")))
+@Default
+public class CommercialPaperContract implements ContractInterface {
+
+ // use the classname for the logger, this way you can refactor
+ private final static Logger LOG = Logger.getLogger(CommercialPaperContract.class.getName());
+
+ @Override
+ public Context createContext(ChaincodeStub stub) {
+ return new CommercialPaperContext(stub);
+ }
+
+ public CommercialPaperContract() {
+
+ }
+
+ /**
+ * Define a custom context for commercial paper
+ */
+
+ /**
+ * Instantiate to perform any setup of the ledger that might be required.
+ *
+ * @param {Context} ctx the transaction context
+ */
+ @Transaction
+ public void instantiate(CommercialPaperContext ctx) {
+ // No implementation required with this example
+ // It could be where data migration is performed, if necessary
+ LOG.info("No data migration to perform");
+ }
+
+ /**
+ * Issue commercial paper
+ *
+ * @param {Context} ctx the transaction context
+ * @param {String} issuer commercial paper issuer
+ * @param {Integer} paperNumber paper number for this issuer
+ * @param {String} issueDateTime paper issue date
+ * @param {String} maturityDateTime paper maturity date
+ * @param {Integer} faceValue face value of paper
+ */
+ @Transaction
+ public CommercialPaper issue(CommercialPaperContext ctx, String issuer, String paperNumber, String issueDateTime,
+ String maturityDateTime, int faceValue) {
+
+ System.out.println(ctx);
+
+ // create an instance of the paper
+ CommercialPaper paper = CommercialPaper.createInstance(issuer, paperNumber, issueDateTime, maturityDateTime,
+ faceValue,issuer,"");
+
+ // Smart contract, rather than paper, moves paper into ISSUED state
+ paper.setIssued();
+
+ // Newly issued paper is owned by the issuer
+ paper.setOwner(issuer);
+
+ System.out.println(paper);
+ // Add the paper to the list of all similar commercial papers in the ledger
+ // world state
+ ctx.paperList.addPaper(paper);
+
+ // Must return a serialized paper to caller of smart contract
+ return paper;
+ }
+
+ /**
+ * Buy commercial paper
+ *
+ * @param {Context} ctx the transaction context
+ * @param {String} issuer commercial paper issuer
+ * @param {Integer} paperNumber paper number for this issuer
+ * @param {String} currentOwner current owner of paper
+ * @param {String} newOwner new owner of paper
+ * @param {Integer} price price paid for this paper
+ * @param {String} purchaseDateTime time paper was purchased (i.e. traded)
+ */
+ @Transaction
+ public CommercialPaper buy(CommercialPaperContext ctx, String issuer, String paperNumber, String currentOwner,
+ String newOwner, int price, String purchaseDateTime) {
+
+ // Retrieve the current paper using key fields provided
+ String paperKey = State.makeKey(new String[] { paperNumber });
+ CommercialPaper paper = ctx.paperList.getPaper(paperKey);
+
+ // Validate current owner
+ if (!paper.getOwner().equals(currentOwner)) {
+ throw new RuntimeException("Paper " + issuer + paperNumber + " is not owned by " + currentOwner);
+ }
+
+ // First buy moves state from ISSUED to TRADING
+ if (paper.isIssued()) {
+ paper.setTrading();
+ }
+
+ // Check paper is not already REDEEMED
+ if (paper.isTrading()) {
+ paper.setOwner(newOwner);
+ } else {
+ throw new RuntimeException(
+ "Paper " + issuer + paperNumber + " is not trading. Current state = " + paper.getState());
+ }
+
+ // Update the paper
+ ctx.paperList.updatePaper(paper);
+ return paper;
+ }
+
+ /**
+ * Redeem commercial paper
+ *
+ * @param {Context} ctx the transaction context
+ * @param {String} issuer commercial paper issuer
+ * @param {Integer} paperNumber paper number for this issuer
+ * @param {String} redeemingOwner redeeming owner of paper
+ * @param {String} redeemDateTime time paper was redeemed
+ */
+ @Transaction
+ public CommercialPaper redeem(CommercialPaperContext ctx, String issuer, String paperNumber, String redeemingOwner,
+ String redeemDateTime) {
+
+ String paperKey = CommercialPaper.makeKey(new String[] { paperNumber });
+
+ CommercialPaper paper = ctx.paperList.getPaper(paperKey);
+
+ // Check paper is not REDEEMED
+ if (paper.isRedeemed()) {
+ throw new RuntimeException("Paper " + issuer + paperNumber + " already redeemed");
+ }
+
+ // Verify that the redeemer owns the commercial paper before redeeming it
+ if (paper.getOwner().equals(redeemingOwner)) {
+ paper.setOwner(paper.getIssuer());
+ paper.setRedeemed();
+ } else {
+ throw new RuntimeException("Redeeming owner does not own paper" + issuer + paperNumber);
+ }
+
+ ctx.paperList.updatePaper(paper);
+ return paper;
+ }
+
+}
diff --git a/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/PaperList.java b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/PaperList.java
new file mode 100644
index 00000000..0ecd24cd
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/PaperList.java
@@ -0,0 +1,31 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package org.example;
+
+import org.example.ledgerapi.StateList;
+import org.hyperledger.fabric.contract.Context;
+
+public class PaperList {
+
+ private StateList stateList;
+
+ public PaperList(Context ctx) {
+ this.stateList = StateList.getStateList(ctx, PaperList.class.getSimpleName(), CommercialPaper::deserialize);
+ }
+
+ public PaperList addPaper(CommercialPaper paper) {
+ stateList.addState(paper);
+ return this;
+ }
+
+ public CommercialPaper getPaper(String paperKey) {
+ return (CommercialPaper) this.stateList.getState(paperKey);
+ }
+
+ public PaperList updatePaper(CommercialPaper paper) {
+ this.stateList.updateState(paper);
+ return this;
+ }
+}
diff --git a/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/State.java b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/State.java
new file mode 100644
index 00000000..5e0a15b6
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/State.java
@@ -0,0 +1,60 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+package org.example.ledgerapi;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import org.json.JSONObject;
+
+/**
+ * State class. States have a class, unique key, and a lifecycle current state
+ * the current state is determined by the specific subclass
+ */
+public class State {
+
+ protected String key;
+
+ /**
+ * @param {String|Object} class An identifiable class of the instance
+ * @param {keyParts[]} elements to pull together to make a key for the objects
+ */
+ public State() {
+
+ }
+
+ String getKey() {
+ return this.key;
+ }
+
+ public String[] getSplitKey() {
+ return State.splitKey(this.key);
+ }
+
+ /**
+ * Convert object to buffer containing JSON data serialization Typically used
+ * before putState()ledger API
+ *
+ * @param {Object} JSON object to serialize
+ * @return {buffer} buffer with the data to store
+ */
+ public static byte[] serialize(Object object) {
+ String jsonStr = new JSONObject(object).toString();
+ return jsonStr.getBytes(UTF_8);
+ }
+
+ /**
+ * Join the keyParts to make a unififed string
+ *
+ * @param (String[]) keyParts
+ */
+ public static String makeKey(String[] keyParts) {
+ return String.join(":", keyParts);
+ }
+
+ public static String[] splitKey(String key) {
+ System.out.println("Splittin gkey " + key + " " + java.util.Arrays.asList(key.split(":")));
+ return key.split(":");
+ }
+
+}
diff --git a/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java
new file mode 100644
index 00000000..891788ea
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/StateDeserializer.java
@@ -0,0 +1,6 @@
+package org.example.ledgerapi;
+
+@FunctionalInterface
+public interface StateDeserializer {
+ State deserialize(byte[] buffer);
+}
diff --git a/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/StateList.java b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/StateList.java
new file mode 100644
index 00000000..d6725860
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/StateList.java
@@ -0,0 +1,48 @@
+package org.example.ledgerapi;
+
+import org.example.ledgerapi.impl.StateListImpl;
+import org.hyperledger.fabric.contract.Context;
+
+public interface StateList {
+
+ /*
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+ /**
+ * StateList provides a named virtual container for a set of ledger states. Each
+ * state has a unique key which associates it with the container, rather than
+ * the container containing a link to the state. This minimizes collisions for
+ * parallel transactions on different states.
+ */
+
+ /**
+ * Store Fabric context for subsequent API access, and name of list
+ */
+ static StateList getStateList(Context ctx, String listName, StateDeserializer deserializer) {
+ return new StateListImpl(ctx, listName, deserializer);
+ }
+
+ /**
+ * Add a state to the list. Creates a new state in worldstate with appropriate
+ * composite key. Note that state defines its own key. State object is
+ * serialized before writing.
+ */
+ public StateList addState(State state);
+
+ /**
+ * Get a state from the list using supplied keys. Form composite keys to
+ * retrieve state from world state. State data is deserialized into JSON object
+ * before being returned.
+ */
+ public State getState(String key);
+
+ /**
+ * Update a state in the list. Puts the new state in world state with
+ * appropriate composite key. Note that state defines its own key. A state is
+ * serialized before writing. Logic is very similar to addState() but kept
+ * separate becuase it is semantically distinct.
+ */
+ public StateList updateState(State state);
+
+}
diff --git a/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java
new file mode 100644
index 00000000..78a42933
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/src/main/java/org/example/ledgerapi/impl/StateListImpl.java
@@ -0,0 +1,100 @@
+package org.example.ledgerapi.impl;
+
+import java.util.Arrays;
+
+import org.example.ledgerapi.State;
+import org.example.ledgerapi.StateDeserializer;
+import org.example.ledgerapi.StateList;
+import org.hyperledger.fabric.contract.Context;
+import org.hyperledger.fabric.shim.ChaincodeStub;
+import org.hyperledger.fabric.shim.ledger.CompositeKey;
+
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+/**
+ * StateList provides a named virtual container for a set of ledger states. Each
+ * state has a unique key which associates it with the container, rather than
+ * the container containing a link to the state. This minimizes collisions for
+ * parallel transactions on different states.
+ */
+public class StateListImpl implements StateList {
+
+ private Context ctx;
+ private String name;
+ private Object supportedClasses;
+ private StateDeserializer deserializer;
+
+ /**
+ * Store Fabric context for subsequent API access, and name of list
+ *
+ * @param deserializer
+ */
+ public StateListImpl(Context ctx, String listName, StateDeserializer deserializer) {
+ this.ctx = ctx;
+ this.name = listName;
+ this.deserializer = deserializer;
+
+ }
+
+ /**
+ * Add a state to the list. Creates a new state in worldstate with appropriate
+ * composite key. Note that state defines its own key. State object is
+ * serialized before writing.
+ */
+ @Override
+ public StateList addState(State state) {
+ System.out.println("Adding state " + this.name);
+ ChaincodeStub stub = this.ctx.getStub();
+ System.out.println("Stub=" + stub);
+ String[] splitKey = state.getSplitKey();
+ System.out.println("Split key " + Arrays.asList(splitKey));
+
+ CompositeKey ledgerKey = stub.createCompositeKey(this.name, splitKey);
+ System.out.println("ledgerkey is ");
+ System.out.println(ledgerKey);
+
+ byte[] data = State.serialize(state);
+ System.out.println("ctx" + this.ctx);
+ System.out.println("stub" + this.ctx.getStub());
+ this.ctx.getStub().putState(ledgerKey.toString(), data);
+
+ return this;
+ }
+
+ /**
+ * Get a state from the list using supplied keys. Form composite keys to
+ * retrieve state from world state. State data is deserialized into JSON object
+ * before being returned.
+ */
+ @Override
+ public State getState(String key) {
+
+ CompositeKey ledgerKey = this.ctx.getStub().createCompositeKey(this.name, State.splitKey(key));
+
+ byte[] data = this.ctx.getStub().getState(ledgerKey.toString());
+ if (data != null) {
+ State state = this.deserializer.deserialize(data);
+ return state;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Update a state in the list. Puts the new state in world state with
+ * appropriate composite key. Note that state defines its own key. A state is
+ * serialized before writing. Logic is very similar to addState() but kept
+ * separate becuase it is semantically distinct.
+ */
+ @Override
+ public StateList updateState(State state) {
+ CompositeKey ledgerKey = this.ctx.getStub().createCompositeKey(this.name, state.getSplitKey());
+ byte[] data = State.serialize(state);
+ this.ctx.getStub().putState(ledgerKey.toString(), data);
+
+ return this;
+ }
+
+}
diff --git a/library-tracker/organization/conrad-hilton/contract-java/src/test/java/org/hyperledger/fabric/DevRouter.java b/library-tracker/organization/conrad-hilton/contract-java/src/test/java/org/hyperledger/fabric/DevRouter.java
new file mode 100644
index 00000000..b1a9689f
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/src/test/java/org/hyperledger/fabric/DevRouter.java
@@ -0,0 +1,25 @@
+package org.hyperledger.fabric;
+
+import org.hyperledger.fabric.contract.ContractRouter;
+import org.hyperledger.fabric.contract.metadata.MetadataBuilder;
+
+public class DevRouter extends ContractRouter {
+
+ public DevRouter(String[] args) {
+ super(args);
+ System.out.println("+++DevRouter Starting...... +++");
+ }
+
+ public static DevRouter getDevRouter() {
+ String args[] = new String[] { "--id", "unittestchaincode" };
+ DevRouter dr = new DevRouter(args);
+ dr.findAllContracts();
+ MetadataBuilder.initialize(dr.getRoutingRegistry(), dr.getTypeRegistry());
+
+ // to output the metadata created
+ String metadata = MetadataBuilder.debugString();
+ System.out.println(metadata);
+ return dr;
+ }
+
+}
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java b/library-tracker/organization/conrad-hilton/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java
new file mode 100644
index 00000000..6a23b24f
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract-java/src/test/java/org/hyperledger/fabric/example/CommercialPaperContractTest.java
@@ -0,0 +1,57 @@
+/*
+ * SPDX-License-Identifier: Apache License 2.0
+ */
+
+package org.hyperledger.fabric.example;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.hyperledger.fabric.DevRouter;
+import org.hyperledger.fabric.shim.ChaincodeStub;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.TestInstance.Lifecycle;
+
+@TestInstance(Lifecycle.PER_CLASS)
+public final class CommercialPaperContractTest {
+
+ DevRouter devRouter;
+
+ @BeforeAll
+ public void scanContracts() {
+ this.devRouter = DevRouter.getDevRouter();
+ }
+
+ ChaincodeStub newStub(String[] args) {
+ ChaincodeStub stub = mock(ChaincodeStub.class);
+ List allargs = new ArrayList();
+ Collections.addAll(allargs, args);
+ when(stub.getArgs()).thenReturn(allargs.stream().map(String::getBytes).collect(Collectors.toList()));
+ when(stub.getStringArgs()).thenReturn(allargs);
+
+ return stub;
+ }
+
+ @Nested
+ class IssuePaper {
+// @Test
+// public void regularIssue() {
+// Response resp;
+// ChaincodeStub stub = newStub(new String[] { "issue", "issuerName", "paper001", "today", "year", "420" });
+// //
+//
+// resp = devRouter.invoke(stub);
+// assertThat(resp.getStatus()).isEqualTo(Status.SUCCESS);
+// assertThat(resp.getStringPayload()).isEqualTo("false");
+// }
+
+ }
+
+}
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/contract/.editorconfig b/library-tracker/organization/conrad-hilton/contract/.editorconfig
new file mode 100644
index 00000000..75a13be2
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/.editorconfig
@@ -0,0 +1,16 @@
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/library-tracker/organization/conrad-hilton/contract/.eslintignore b/library-tracker/organization/conrad-hilton/contract/.eslintignore
new file mode 100644
index 00000000..15958470
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/.eslintignore
@@ -0,0 +1,5 @@
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+coverage
diff --git a/library-tracker/organization/conrad-hilton/contract/.eslintrc.js b/library-tracker/organization/conrad-hilton/contract/.eslintrc.js
new file mode 100644
index 00000000..6772c660
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/.eslintrc.js
@@ -0,0 +1,37 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+module.exports = {
+ env: {
+ node: true,
+ mocha: true
+ },
+ parserOptions: {
+ ecmaVersion: 8,
+ sourceType: 'script'
+ },
+ extends: "eslint:recommended",
+ rules: {
+ indent: ['error', 4],
+ 'linebreak-style': ['error', 'unix'],
+ quotes: ['error', 'single'],
+ semi: ['error', 'always'],
+ 'no-unused-vars': ['error', { args: 'none' }],
+ 'no-console': 'off',
+ curly: 'error',
+ eqeqeq: 'error',
+ 'no-throw-literal': 'error',
+ strict: 'error',
+ 'no-var': 'error',
+ 'dot-notation': 'error',
+ 'no-tabs': 'error',
+ 'no-trailing-spaces': 'error',
+ 'no-use-before-define': 'error',
+ 'no-useless-call': 'error',
+ 'no-with': 'error',
+ 'operator-linebreak': 'error',
+ yoda: 'error',
+ 'quote-props': ['error', 'as-needed']
+ }
+};
diff --git a/library-tracker/organization/conrad-hilton/contract/.gitignore b/library-tracker/organization/conrad-hilton/contract/.gitignore
new file mode 100644
index 00000000..40b878db
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/.gitignore
@@ -0,0 +1 @@
+node_modules/
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/contract/.npmignore b/library-tracker/organization/conrad-hilton/contract/.npmignore
new file mode 100644
index 00000000..a00ca941
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/.npmignore
@@ -0,0 +1,77 @@
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# TypeScript v1 declaration files
+typings/
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+
+# next.js build output
+.next
+
+# nuxt.js build output
+.nuxt
+
+# vuepress build output
+.vuepress/dist
+
+# Serverless directories
+.serverless
diff --git a/library-tracker/organization/conrad-hilton/contract/index.js b/library-tracker/organization/conrad-hilton/contract/index.js
new file mode 100644
index 00000000..b957b5e3
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/index.js
@@ -0,0 +1,8 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+'use strict';
+
+const cpcontract = require('./lib/papercontract.js');
+module.exports.contracts = [cpcontract];
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/contract/ledger-api/state.js b/library-tracker/organization/conrad-hilton/contract/ledger-api/state.js
new file mode 100644
index 00000000..df2fbe57
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/ledger-api/state.js
@@ -0,0 +1,98 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+'use strict';
+
+/**
+ * State class. States have a class, unique key, and a lifecycle current state
+ * the current state is determined by the specific subclass
+ */
+class State {
+
+ /**
+ * @param {String|Object} class An indentifiable class of the instance
+ * @param {keyParts[]} elements to pull together to make a key for the objects
+ */
+ constructor(stateClass, keyParts) {
+ this.class = stateClass;
+ this.key = State.makeKey(keyParts);
+ this.currentState = null;
+ }
+
+ getClass() {
+ return this.class;
+ }
+
+ getKey() {
+ return this.key;
+ }
+
+ getSplitKey(){
+ return State.splitKey(this.key);
+ }
+
+ getCurrentState(){
+ return this.currentState;
+ }
+
+ serialize() {
+ return State.serialize(this);
+ }
+
+ /**
+ * Convert object to buffer containing JSON data serialization
+ * Typically used before putState()ledger API
+ * @param {Object} JSON object to serialize
+ * @return {buffer} buffer with the data to store
+ */
+ static serialize(object) {
+ return Buffer.from(JSON.stringify(object));
+ }
+
+ /**
+ * Deserialize object into one of a set of supported JSON classes
+ * i.e. Covert serialized data to JSON object
+ * Typically used after getState() ledger API
+ * @param {data} data to deserialize into JSON object
+ * @param (supportedClasses) the set of classes data can be serialized to
+ * @return {json} json with the data to store
+ */
+ static deserialize(data, supportedClasses) {
+ let json = JSON.parse(data.toString());
+ let objClass = supportedClasses[json.class];
+ if (!objClass) {
+ throw new Error(`Unknown class of ${json.class}`);
+ }
+ let object = new (objClass)(json);
+
+ return object;
+ }
+
+ /**
+ * Deserialize object into specific object class
+ * Typically used after getState() ledger API
+ * @param {data} data to deserialize into JSON object
+ * @return {json} json with the data to store
+ */
+ static deserializeClass(data, objClass) {
+ let json = JSON.parse(data.toString());
+ let object = new (objClass)(json);
+ return object;
+ }
+
+ /**
+ * Join the keyParts to make a unififed string
+ * @param (String[]) keyParts
+ */
+ static makeKey(keyParts) {
+ return keyParts.map(part => JSON.stringify(part)).join(':');
+ }
+
+ static splitKey(key){
+ return key.split(':');
+ }
+
+}
+
+module.exports = State;
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/contract/ledger-api/statelist.js b/library-tracker/organization/conrad-hilton/contract/ledger-api/statelist.js
new file mode 100644
index 00000000..17604334
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/ledger-api/statelist.js
@@ -0,0 +1,72 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+'use strict';
+const State = require('./state.js');
+
+/**
+ * StateList provides a named virtual container for a set of ledger states.
+ * Each state has a unique key which associates it with the container, rather
+ * than the container containing a link to the state. This minimizes collisions
+ * for parallel transactions on different states.
+ */
+class StateList {
+
+ /**
+ * Store Fabric context for subsequent API access, and name of list
+ */
+ constructor(ctx, listName) {
+ this.ctx = ctx;
+ this.name = listName;
+ this.supportedClasses = {};
+
+ }
+
+ /**
+ * Add a state to the list. Creates a new state in worldstate with
+ * appropriate composite key. Note that state defines its own key.
+ * State object is serialized before writing.
+ */
+ async addState(state) {
+ let key = this.ctx.stub.createCompositeKey(this.name, state.getSplitKey());
+ let data = State.serialize(state);
+ await this.ctx.stub.putState(key, data);
+ }
+
+ /**
+ * Get a state from the list using supplied keys. Form composite
+ * keys to retrieve state from world state. State data is deserialized
+ * into JSON object before being returned.
+ */
+ async getState(key) {
+ let ledgerKey = this.ctx.stub.createCompositeKey(this.name, State.splitKey(key));
+ let data = await this.ctx.stub.getState(ledgerKey);
+ if (data){
+ let state = State.deserialize(data, this.supportedClasses);
+ return state;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Update a state in the list. Puts the new state in world state with
+ * appropriate composite key. Note that state defines its own key.
+ * A state is serialized before writing. Logic is very similar to
+ * addState() but kept separate becuase it is semantically distinct.
+ */
+ async updateState(state) {
+ let key = this.ctx.stub.createCompositeKey(this.name, state.getSplitKey());
+ let data = State.serialize(state);
+ await this.ctx.stub.putState(key, data);
+ }
+
+ /** Stores the class for future deserialization */
+ use(stateClass) {
+ this.supportedClasses[stateClass.getClass()] = stateClass;
+ }
+
+}
+
+module.exports = StateList;
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/contract/lib/paper.js b/library-tracker/organization/conrad-hilton/contract/lib/paper.js
new file mode 100644
index 00000000..24f9d96b
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/lib/paper.js
@@ -0,0 +1,102 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+'use strict';
+
+// Utility class for ledger state
+const State = require('./../ledger-api/state.js');
+
+// Enumerate commercial paper state values
+const cpState = {
+ ISSUED: 1,
+ TRADING: 2,
+ REDEEMED: 3
+};
+
+/**
+ * CommercialPaper class extends State class
+ * Class will be used by application and smart contract to define a paper
+ */
+class CommercialPaper extends State {
+
+ constructor(obj) {
+ super(CommercialPaper.getClass(), [obj.issuer, obj.paperNumber]);
+ Object.assign(this, obj);
+ }
+
+ /**
+ * Basic getters and setters
+ */
+ getIssuer() {
+ return this.issuer;
+ }
+
+ setIssuer(newIssuer) {
+ this.issuer = newIssuer;
+ }
+
+ getOwner() {
+ return this.owner;
+ }
+
+ setOwner(newOwner) {
+ this.owner = newOwner;
+ }
+
+ /**
+ * Useful methods to encapsulate commercial paper states
+ */
+ setIssued() {
+ this.currentState = cpState.ISSUED;
+ }
+
+ setTrading() {
+ this.currentState = cpState.TRADING;
+ }
+
+ setRedeemed() {
+ this.currentState = cpState.REDEEMED;
+ }
+
+ isIssued() {
+ return this.currentState === cpState.ISSUED;
+ }
+
+ isTrading() {
+ return this.currentState === cpState.TRADING;
+ }
+
+ isRedeemed() {
+ return this.currentState === cpState.REDEEMED;
+ }
+
+ static fromBuffer(buffer) {
+ return CommercialPaper.deserialize(buffer);
+ }
+
+ toBuffer() {
+ return Buffer.from(JSON.stringify(this));
+ }
+
+ /**
+ * Deserialize a state data to commercial paper
+ * @param {Buffer} data to form back into the object
+ */
+ static deserialize(data) {
+ return State.deserializeClass(data, CommercialPaper);
+ }
+
+ /**
+ * Factory method to create a commercial paper object
+ */
+ static createInstance(issuer, paperNumber, issueDateTime, maturityDateTime, faceValue) {
+ return new CommercialPaper({ issuer, paperNumber, issueDateTime, maturityDateTime, faceValue });
+ }
+
+ static getClass() {
+ return 'org.papernet.commercialpaper';
+ }
+}
+
+module.exports = CommercialPaper;
diff --git a/library-tracker/organization/conrad-hilton/contract/lib/papercontract.js b/library-tracker/organization/conrad-hilton/contract/lib/papercontract.js
new file mode 100644
index 00000000..4bbed909
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/lib/papercontract.js
@@ -0,0 +1,156 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+'use strict';
+
+// Fabric smart contract classes
+const { Contract, Context } = require('fabric-contract-api');
+
+// PaperNet specifc classes
+const CommercialPaper = require('./paper.js');
+const PaperList = require('./paperlist.js');
+
+/**
+ * A custom context provides easy access to list of all commercial papers
+ */
+class CommercialPaperContext extends Context {
+
+ constructor() {
+ super();
+ // All papers are held in a list of papers
+ this.paperList = new PaperList(this);
+ }
+
+}
+
+/**
+ * Define commercial paper smart contract by extending Fabric Contract class
+ *
+ */
+class CommercialPaperContract extends Contract {
+
+ constructor() {
+ // Unique name when multiple contracts per chaincode file
+ super('org.papernet.commercialpaper');
+ }
+
+ /**
+ * Define a custom context for commercial paper
+ */
+ createContext() {
+ return new CommercialPaperContext();
+ }
+
+ /**
+ * Instantiate to perform any setup of the ledger that might be required.
+ * @param {Context} ctx the transaction context
+ */
+ async instantiate(ctx) {
+ // No implementation required with this example
+ // It could be where data migration is performed, if necessary
+ console.log('Instantiate the contract');
+ }
+
+ /**
+ * Issue commercial paper
+ *
+ * @param {Context} ctx the transaction context
+ * @param {String} issuer commercial paper issuer
+ * @param {Integer} paperNumber paper number for this issuer
+ * @param {String} issueDateTime paper issue date
+ * @param {String} maturityDateTime paper maturity date
+ * @param {Integer} faceValue face value of paper
+ */
+ async issue(ctx, issuer, paperNumber, issueDateTime, maturityDateTime, faceValue) {
+
+ // create an instance of the paper
+ let paper = CommercialPaper.createInstance(issuer, paperNumber, issueDateTime, maturityDateTime, faceValue);
+
+ // Smart contract, rather than paper, moves paper into ISSUED state
+ paper.setIssued();
+
+ // Newly issued paper is owned by the issuer
+ paper.setOwner(issuer);
+
+ // Add the paper to the list of all similar commercial papers in the ledger world state
+ await ctx.paperList.addPaper(paper);
+
+ // Must return a serialized paper to caller of smart contract
+ return paper;
+ }
+
+ /**
+ * Buy commercial paper
+ *
+ * @param {Context} ctx the transaction context
+ * @param {String} issuer commercial paper issuer
+ * @param {Integer} paperNumber paper number for this issuer
+ * @param {String} currentOwner current owner of paper
+ * @param {String} newOwner new owner of paper
+ * @param {Integer} price price paid for this paper
+ * @param {String} purchaseDateTime time paper was purchased (i.e. traded)
+ */
+ async buy(ctx, issuer, paperNumber, currentOwner, newOwner, price, purchaseDateTime) {
+
+ // Retrieve the current paper using key fields provided
+ let paperKey = CommercialPaper.makeKey([issuer, paperNumber]);
+ let paper = await ctx.paperList.getPaper(paperKey);
+
+ // Validate current owner
+ if (paper.getOwner() !== currentOwner) {
+ throw new Error('Paper ' + issuer + paperNumber + ' is not owned by ' + currentOwner);
+ }
+
+ // First buy moves state from ISSUED to TRADING
+ if (paper.isIssued()) {
+ paper.setTrading();
+ }
+
+ // Check paper is not already REDEEMED
+ if (paper.isTrading()) {
+ paper.setOwner(newOwner);
+ } else {
+ throw new Error('Paper ' + issuer + paperNumber + ' is not trading. Current state = ' +paper.getCurrentState());
+ }
+
+ // Update the paper
+ await ctx.paperList.updatePaper(paper);
+ return paper;
+ }
+
+ /**
+ * Redeem commercial paper
+ *
+ * @param {Context} ctx the transaction context
+ * @param {String} issuer commercial paper issuer
+ * @param {Integer} paperNumber paper number for this issuer
+ * @param {String} redeemingOwner redeeming owner of paper
+ * @param {String} redeemDateTime time paper was redeemed
+ */
+ async redeem(ctx, issuer, paperNumber, redeemingOwner, redeemDateTime) {
+
+ let paperKey = CommercialPaper.makeKey([issuer, paperNumber]);
+
+ let paper = await ctx.paperList.getPaper(paperKey);
+
+ // Check paper is not REDEEMED
+ if (paper.isRedeemed()) {
+ throw new Error('Paper ' + issuer + paperNumber + ' already redeemed');
+ }
+
+ // Verify that the redeemer owns the commercial paper before redeeming it
+ if (paper.getOwner() === redeemingOwner) {
+ paper.setOwner(paper.getIssuer());
+ paper.setRedeemed();
+ } else {
+ throw new Error('Redeeming owner does not own paper' + issuer + paperNumber);
+ }
+
+ await ctx.paperList.updatePaper(paper);
+ return paper;
+ }
+
+}
+
+module.exports = CommercialPaperContract;
diff --git a/library-tracker/organization/conrad-hilton/contract/lib/paperlist.js b/library-tracker/organization/conrad-hilton/contract/lib/paperlist.js
new file mode 100644
index 00000000..ac5d7183
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/lib/paperlist.js
@@ -0,0 +1,33 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+
+'use strict';
+
+// Utility class for collections of ledger states -- a state list
+const StateList = require('./../ledger-api/statelist.js');
+
+const CommercialPaper = require('./paper.js');
+
+class PaperList extends StateList {
+
+ constructor(ctx) {
+ super(ctx, 'org.papernet.commercialpaperlist');
+ this.use(CommercialPaper);
+ }
+
+ async addPaper(paper) {
+ return this.addState(paper);
+ }
+
+ async getPaper(paperKey) {
+ return this.getState(paperKey);
+ }
+
+ async updatePaper(paper) {
+ return this.updateState(paper);
+ }
+}
+
+
+module.exports = PaperList;
\ No newline at end of file
diff --git a/library-tracker/organization/conrad-hilton/contract/package-lock.json b/library-tracker/organization/conrad-hilton/contract/package-lock.json
new file mode 100644
index 00000000..fb43e376
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/package-lock.json
@@ -0,0 +1,4755 @@
+{
+ "name": "papercontract",
+ "version": "0.0.3",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@ampretia/x509": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@ampretia/x509/-/x509-0.4.0.tgz",
+ "integrity": "sha512-U5QMwOceubYk2E1+r/pFachmJZn/unfZIgwZbETi664SunYMfUd39JDTn0GvezkUeG8AVko1gK/y7e9xyFQLIA==",
+ "requires": {
+ "nan": "2.12.0"
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.0.0-beta.51",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz",
+ "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "7.0.0-beta.51"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.0.0-beta.51",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz",
+ "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "7.0.0-beta.51",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.5",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.0.0-beta.51",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz",
+ "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "7.0.0-beta.51",
+ "@babel/template": "7.0.0-beta.51",
+ "@babel/types": "7.0.0-beta.51"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.0.0-beta.51",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz",
+ "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "7.0.0-beta.51"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.0.0-beta.51",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz",
+ "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "7.0.0-beta.51"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.0.0-beta.51",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz",
+ "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.0.0-beta.51",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz",
+ "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.0.0-beta.51",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz",
+ "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "7.0.0-beta.51",
+ "@babel/parser": "7.0.0-beta.51",
+ "@babel/types": "7.0.0-beta.51",
+ "lodash": "^4.17.5"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.0.0-beta.51",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz",
+ "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "7.0.0-beta.51",
+ "@babel/generator": "7.0.0-beta.51",
+ "@babel/helper-function-name": "7.0.0-beta.51",
+ "@babel/helper-split-export-declaration": "7.0.0-beta.51",
+ "@babel/parser": "7.0.0-beta.51",
+ "@babel/types": "7.0.0-beta.51",
+ "debug": "^3.1.0",
+ "globals": "^11.1.0",
+ "invariant": "^2.2.0",
+ "lodash": "^4.17.5"
+ }
+ },
+ "@babel/types": {
+ "version": "7.0.0-beta.51",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz",
+ "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.5",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@sinonjs/commons": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.4.0.tgz",
+ "integrity": "sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw==",
+ "dev": true,
+ "requires": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "@sinonjs/formatio": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.1.tgz",
+ "integrity": "sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ==",
+ "dev": true,
+ "requires": {
+ "@sinonjs/commons": "^1",
+ "@sinonjs/samsam": "^3.1.0"
+ },
+ "dependencies": {
+ "@sinonjs/samsam": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.2.tgz",
+ "integrity": "sha512-ILO/rR8LfAb60Y1Yfp9vxfYAASK43NFC2mLzpvLUbCQY/Qu8YwReboseu8aheCEkyElZF2L2T9mHcR2bgdvZyA==",
+ "dev": true,
+ "requires": {
+ "@sinonjs/commons": "^1.0.2",
+ "array-from": "^2.1.1",
+ "lodash": "^4.17.11"
+ }
+ }
+ }
+ },
+ "@sinonjs/samsam": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.1.3.tgz",
+ "integrity": "sha512-8zNeBkSKhU9a5cRNbpCKau2WWPfan+Q2zDlcXvXyhn9EsMqgYs4qzo0XHNVlXC6ABQL8fT6nV+zzo5RTHJzyXw==",
+ "dev": true
+ },
+ "@sinonjs/text-encoding": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
+ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
+ "dev": true
+ },
+ "@types/google-protobuf": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.7.1.tgz",
+ "integrity": "sha512-kiLxbqoi2C7NmkGj1ZpkSDyIqj4vqDEIjx7wX+O0GXV6bLX6u/oLz49CwefD0c0vzaKeBdOqmUtI8bC0bBRr0w=="
+ },
+ "@types/node": {
+ "version": "8.10.51",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.51.tgz",
+ "integrity": "sha512-cArrlJp3Yv6IyFT/DYe+rlO8o3SIHraALbBW/+CcCYW/a9QucpLI+n2p4sRxAvl2O35TiecpX2heSZtJjvEO+Q=="
+ },
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
+ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
+ "dev": true,
+ "requires": {
+ "acorn": "^3.0.4"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
+ "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
+ "dev": true
+ }
+ }
+ },
+ "ajv": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-keywords": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
+ "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
+ "dev": true
+ },
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "array-from": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz",
+ "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=",
+ "dev": true
+ },
+ "ascli": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz",
+ "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=",
+ "requires": {
+ "colour": "~0.7.1",
+ "optjs": "~3.2.2"
+ }
+ },
+ "assertion-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "dev": true
+ },
+ "async": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ }
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "browser-stdout": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+ "dev": true
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+ "dev": true
+ },
+ "bytebuffer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz",
+ "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=",
+ "requires": {
+ "long": "~3"
+ }
+ },
+ "caller-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
+ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+ "dev": true,
+ "requires": {
+ "callsites": "^0.2.0"
+ }
+ },
+ "callsites": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
+ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
+ },
+ "chai": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz",
+ "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==",
+ "dev": true,
+ "requires": {
+ "assertion-error": "^1.1.0",
+ "check-error": "^1.0.2",
+ "deep-eql": "^3.0.1",
+ "get-func-name": "^2.0.0",
+ "pathval": "^1.1.0",
+ "type-detect": "^4.0.5"
+ }
+ },
+ "chai-as-promised": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
+ "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
+ "dev": true,
+ "requires": {
+ "check-error": "^1.0.2"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "chardet": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
+ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
+ "dev": true
+ },
+ "check-error": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
+ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
+ "dev": true
+ },
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
+ "dev": true
+ },
+ "class-transformer": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
+ "integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ },
+ "color": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
+ "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
+ "requires": {
+ "color-convert": "^1.9.1",
+ "color-string": "^1.5.2"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "color-string": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
+ "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "colornames": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz",
+ "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y="
+ },
+ "colors": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
+ "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg=="
+ },
+ "colorspace": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz",
+ "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==",
+ "requires": {
+ "color": "3.0.x",
+ "text-hex": "1.0.x"
+ }
+ },
+ "colour": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz",
+ "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g="
+ },
+ "commander": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
+ "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "deep-eql": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
+ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
+ "dev": true,
+ "requires": {
+ "type-detect": "^4.0.0"
+ }
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "diagnostics": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz",
+ "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==",
+ "requires": {
+ "colorspace": "1.1.x",
+ "enabled": "1.0.x",
+ "kuler": "1.0.x"
+ }
+ },
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "enabled": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz",
+ "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=",
+ "requires": {
+ "env-variable": "0.0.x"
+ }
+ },
+ "env-variable": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz",
+ "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA=="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "eslint": {
+ "version": "4.19.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz",
+ "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==",
+ "dev": true,
+ "requires": {
+ "ajv": "^5.3.0",
+ "babel-code-frame": "^6.22.0",
+ "chalk": "^2.1.0",
+ "concat-stream": "^1.6.0",
+ "cross-spawn": "^5.1.0",
+ "debug": "^3.1.0",
+ "doctrine": "^2.1.0",
+ "eslint-scope": "^3.7.1",
+ "eslint-visitor-keys": "^1.0.0",
+ "espree": "^3.5.4",
+ "esquery": "^1.0.0",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^2.0.0",
+ "functional-red-black-tree": "^1.0.1",
+ "glob": "^7.1.2",
+ "globals": "^11.0.1",
+ "ignore": "^3.3.3",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^3.0.6",
+ "is-resolvable": "^1.0.0",
+ "js-yaml": "^3.9.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.4",
+ "minimatch": "^3.0.2",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "path-is-inside": "^1.0.2",
+ "pluralize": "^7.0.0",
+ "progress": "^2.0.0",
+ "regexpp": "^1.0.1",
+ "require-uncached": "^1.0.3",
+ "semver": "^5.3.0",
+ "strip-ansi": "^4.0.0",
+ "strip-json-comments": "~2.0.1",
+ "table": "4.0.2",
+ "text-table": "~0.2.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "^4.6.0",
+ "fast-deep-equal": "^1.0.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.3.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "3.7.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz",
+ "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
+ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.5.0",
+ "acorn-jsx": "^3.0.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.0.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "external-editor": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
+ "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.4.0",
+ "iconv-lite": "^0.4.17",
+ "tmp": "^0.0.33"
+ }
+ },
+ "fabric-contract-api": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/fabric-contract-api/-/fabric-contract-api-1.4.2.tgz",
+ "integrity": "sha512-Zo3LfdrSRyo8qXLNcTCp5TFMj/hpx4rXw+lwj6oSZl/E/ED1CrQJxdSqb4XYRo4bs0wSYEfS65rkxPEPiaiRXg==",
+ "requires": {
+ "class-transformer": "^0.2.2",
+ "fast-safe-stringify": "^2.0.6",
+ "get-params": "^0.1.2",
+ "reflect-metadata": "^0.1.12",
+ "winston": "^3.2.1"
+ }
+ },
+ "fabric-shim": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/fabric-shim/-/fabric-shim-1.4.2.tgz",
+ "integrity": "sha512-obKq4r/hCyaT78GlLgXhDevhcJtPpTdFtIqMLGkCBEbB+ap7RYVh1JYJWvG2SM5OB5rs43FUbQ99bPwxHuoBtg==",
+ "requires": {
+ "@ampretia/x509": "^0.4.0",
+ "@types/google-protobuf": "^3.2.7",
+ "@types/node": "^8.9.4",
+ "ajv": "^6.5.5",
+ "fs-extra": "^7.0.1",
+ "grpc": "1.17.0",
+ "jsrsasign": "^8.0.4",
+ "protobufjs": "5.0.3",
+ "reflect-metadata": "^0.1.12",
+ "winston": "^3.2.1",
+ "yargs": "^10.0.2",
+ "yargs-parser": "^11.0.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fast-safe-stringify": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz",
+ "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
+ },
+ "fecha": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
+ "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg=="
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
+ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^1.2.1",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
+ "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
+ "dev": true,
+ "requires": {
+ "circular-json": "^0.3.1",
+ "graceful-fs": "^4.1.2",
+ "rimraf": "~2.6.2",
+ "write": "^0.2.1"
+ }
+ },
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
+ },
+ "get-func-name": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
+ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+ "dev": true
+ },
+ "get-params": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/get-params/-/get-params-0.1.2.tgz",
+ "integrity": "sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4="
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
+ },
+ "glob": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
+ "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg=="
+ },
+ "growl": {
+ "version": "1.10.5",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "dev": true
+ },
+ "grpc": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.17.0.tgz",
+ "integrity": "sha512-5zb5ilwHlsiWfE2Abq/IN5SkHQ2zi4QF/u9Gewcw5DO3y+hGTtzZUiMK52MX3YZHAIRjqxDcO3fx0jLhPjT8Zw==",
+ "requires": {
+ "lodash.camelcase": "^4.3.0",
+ "lodash.clone": "^4.5.0",
+ "nan": "^2.0.0",
+ "node-pre-gyp": "^0.12.0",
+ "protobufjs": "^5.0.3"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "bundled": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "bundled": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "bundled": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "bundled": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "needle": {
+ "version": "2.2.4",
+ "bundled": true,
+ "requires": {
+ "debug": "^2.1.2",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.12.0",
+ "bundled": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.5",
+ "bundled": true
+ },
+ "npm-packlist": {
+ "version": "1.1.12",
+ "bundled": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "bundled": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true
+ },
+ "semver": {
+ "version": "5.6.0",
+ "bundled": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "signal-exit": {
+ "version": "3.0.1",
+ "bundled": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "bundled": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "bundled": true
+ }
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "inquirer": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
+ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.0",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^2.0.4",
+ "figures": "^2.0.0",
+ "lodash": "^4.3.0",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rx-lite": "^4.0.8",
+ "rx-lite-aggregates": "^4.0.8",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^4.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
+ },
+ "is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
+ "istanbul-lib-coverage": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
+ "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
+ "dev": true
+ },
+ "istanbul-lib-instrument": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz",
+ "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==",
+ "dev": true,
+ "requires": {
+ "@babel/generator": "7.0.0-beta.51",
+ "@babel/parser": "7.0.0-beta.51",
+ "@babel/template": "7.0.0-beta.51",
+ "@babel/traverse": "7.0.0-beta.51",
+ "@babel/types": "7.0.0-beta.51",
+ "istanbul-lib-coverage": "^2.0.1",
+ "semver": "^5.5.0"
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsrsasign": {
+ "version": "8.0.12",
+ "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-8.0.12.tgz",
+ "integrity": "sha1-Iqu5ZW00owuVMENnIINeicLlwxY="
+ },
+ "just-extend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz",
+ "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==",
+ "dev": true
+ },
+ "kuler": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz",
+ "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==",
+ "requires": {
+ "colornames": "^1.1.1"
+ }
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
+ },
+ "lodash.clone": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
+ "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
+ },
+ "lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "dev": true
+ },
+ "logform": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz",
+ "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==",
+ "requires": {
+ "colors": "^1.2.1",
+ "fast-safe-stringify": "^2.0.4",
+ "fecha": "^2.3.3",
+ "ms": "^2.1.1",
+ "triple-beam": "^1.3.0"
+ }
+ },
+ "lolex": {
+ "version": "2.7.5",
+ "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz",
+ "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==",
+ "dev": true
+ },
+ "long": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
+ "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s="
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "mem": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "mocha": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz",
+ "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==",
+ "dev": true,
+ "requires": {
+ "browser-stdout": "1.3.1",
+ "commander": "2.15.1",
+ "debug": "3.1.0",
+ "diff": "3.5.0",
+ "escape-string-regexp": "1.0.5",
+ "glob": "7.1.2",
+ "growl": "1.10.5",
+ "he": "1.1.1",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.1",
+ "supports-color": "5.4.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.0.tgz",
+ "integrity": "sha512-zT5nC0JhbljmyEf+Z456nvm7iO7XgRV2hYxoBtPpnyp+0Q4aCoP6uWNn76v/I6k2kCYNLWqWbwBWQcjsNI/bjw=="
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "nise": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.0.tgz",
+ "integrity": "sha512-Z3sfYEkLFzFmL8KY6xnSJLRxwQwYBjOXi/24lb62ZnZiGA0JUzGGTI6TBIgfCSMIDl9Jlu8SRmHNACLTemDHww==",
+ "dev": true,
+ "requires": {
+ "@sinonjs/formatio": "^3.1.0",
+ "@sinonjs/text-encoding": "^0.7.1",
+ "just-extend": "^4.0.2",
+ "lolex": "^4.1.0",
+ "path-to-regexp": "^1.7.0"
+ },
+ "dependencies": {
+ "lolex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.1.0.tgz",
+ "integrity": "sha512-BYxIEXiVq5lGIXeVHnsFzqa1TxN5acnKnPCdlZSpzm8viNEOhiigupA4vTQ9HEFQ6nLTQ9wQOgBknJgzUYQ9Aw==",
+ "dev": true
+ }
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ },
+ "nyc": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz",
+ "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=",
+ "dev": true,
+ "requires": {
+ "archy": "^1.0.0",
+ "arrify": "^1.0.1",
+ "caching-transform": "^1.0.0",
+ "convert-source-map": "^1.5.1",
+ "debug-log": "^1.0.1",
+ "default-require-extensions": "^1.0.0",
+ "find-cache-dir": "^0.1.1",
+ "find-up": "^2.1.0",
+ "foreground-child": "^1.5.3",
+ "glob": "^7.0.6",
+ "istanbul-lib-coverage": "^1.2.0",
+ "istanbul-lib-hook": "^1.1.0",
+ "istanbul-lib-instrument": "^2.1.0",
+ "istanbul-lib-report": "^1.1.3",
+ "istanbul-lib-source-maps": "^1.2.5",
+ "istanbul-reports": "^1.4.1",
+ "md5-hex": "^1.2.0",
+ "merge-source-map": "^1.1.0",
+ "micromatch": "^3.1.10",
+ "mkdirp": "^0.5.0",
+ "resolve-from": "^2.0.0",
+ "rimraf": "^2.6.2",
+ "signal-exit": "^3.0.1",
+ "spawn-wrap": "^1.4.2",
+ "test-exclude": "^4.2.0",
+ "yargs": "11.1.0",
+ "yargs-parser": "^8.0.0"
+ },
+ "dependencies": {
+ "align-text": {
+ "version": "0.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "kind-of": "^3.0.2",
+ "longest": "^1.0.1",
+ "repeat-string": "^1.5.2"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "append-transform": {
+ "version": "0.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "default-require-extensions": "^1.0.0"
+ }
+ },
+ "archy": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "bundled": true,
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "bundled": true,
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "caching-transform": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "md5-hex": "^1.2.0",
+ "mkdirp": "^0.5.1",
+ "write-file-atomic": "^1.1.4"
+ }
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "^0.1.3",
+ "lazy-cache": "^1.0.3"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "center-align": "^0.1.1",
+ "right-align": "^0.1.1",
+ "wordwrap": "0.0.2"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.5.1",
+ "bundled": true,
+ "dev": true
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "4.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
+ }
+ },
+ "debug": {
+ "version": "3.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "debug-log": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "default-require-extensions": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "strip-bom": "^2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "mkdirp": "^0.5.1",
+ "pkg-dir": "^1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "foreground-child": {
+ "version": "1.5.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^4",
+ "signal-exit": "^3.0.0"
+ }
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "bundled": true,
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "bundled": true,
+ "dev": true
+ },
+ "handlebars": {
+ "version": "4.0.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "async": "^1.4.0",
+ "optimist": "^0.6.1",
+ "source-map": "^0.4.4",
+ "uglify-js": "^2.6"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.4.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.6.0",
+ "bundled": true,
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "bundled": true,
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "bundled": true,
+ "dev": true
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "bundled": true,
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "builtin-modules": "^1.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-odd": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-number": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "bundled": true,
+ "dev": true
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "istanbul-lib-coverage": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "istanbul-lib-hook": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "append-transform": "^0.4.0"
+ }
+ },
+ "istanbul-lib-report": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "istanbul-lib-coverage": "^1.1.2",
+ "mkdirp": "^0.5.1",
+ "path-parse": "^1.0.5",
+ "supports-color": "^3.1.2"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "has-flag": "^1.0.0"
+ }
+ }
+ }
+ },
+ "istanbul-lib-source-maps": {
+ "version": "1.2.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "debug": "^3.1.0",
+ "istanbul-lib-coverage": "^1.2.0",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.6.1",
+ "source-map": "^0.5.3"
+ }
+ },
+ "istanbul-reports": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "handlebars": "^4.0.3"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "longest": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "lru-cache": {
+ "version": "4.1.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "bundled": true,
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "md5-hex": {
+ "version": "1.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "md5-o-matic": "^0.1.1"
+ }
+ },
+ "md5-o-matic": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "mem": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "merge-source-map": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true
+ },
+ "mixin-deep": {
+ "version": "1.3.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "nanomatch": {
+ "version": "1.2.9",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-odd": "^2.0.0",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "is-builtin-module": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "os-locale": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "execa": "^0.7.0",
+ "lcid": "^1.0.0",
+ "mem": "^1.1.0"
+ }
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "bundled": true,
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "bundled": true,
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ }
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ }
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "bundled": true,
+ "dev": true
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "resolve-from": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "bundled": true,
+ "dev": true
+ },
+ "ret": {
+ "version": "0.1.15",
+ "bundled": true,
+ "dev": true
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "^0.1.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "semver": {
+ "version": "5.5.0",
+ "bundled": true,
+ "dev": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "slide": {
+ "version": "1.1.6",
+ "bundled": true,
+ "dev": true
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "bundled": true,
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.1",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "bundled": true,
+ "dev": true
+ },
+ "spawn-wrap": {
+ "version": "1.4.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "foreground-child": "^1.5.6",
+ "mkdirp": "^0.5.0",
+ "os-homedir": "^1.0.1",
+ "rimraf": "^2.6.2",
+ "signal-exit": "^3.0.2",
+ "which": "^1.3.0"
+ }
+ },
+ "spdx-correct": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "test-exclude": {
+ "version": "4.2.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1",
+ "micromatch": "^3.1.8",
+ "object-assign": "^4.1.0",
+ "read-pkg-up": "^1.0.1",
+ "require-main-filename": "^1.0.1"
+ }
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "source-map": "~0.5.1",
+ "uglify-to-browserify": "~1.0.0",
+ "yargs": "~3.10.0"
+ },
+ "dependencies": {
+ "yargs": {
+ "version": "3.10.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "camelcase": "^1.0.2",
+ "cliui": "^2.1.0",
+ "decamelize": "^1.0.0",
+ "window-size": "0.1.0"
+ }
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "union-value": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^0.4.3"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "set-value": {
+ "version": "0.4.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.1",
+ "to-object-path": "^0.3.0"
+ }
+ }
+ }
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "use": {
+ "version": "3.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "1.3.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "slide": "^1.1.5"
+ }
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "bundled": true,
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "yargs": {
+ "version": "11.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.1.1",
+ "find-up": "^2.1.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^9.0.2"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "9.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "8.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "one-time": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz",
+ "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4="
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.4",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "wordwrap": "~1.0.0"
+ }
+ },
+ "optjs": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz",
+ "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4="
+ },
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "requires": {
+ "lcid": "^1.0.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
+ },
+ "path-to-regexp": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
+ "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
+ "dev": true,
+ "requires": {
+ "isarray": "0.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ }
+ }
+ },
+ "pathval": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz",
+ "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=",
+ "dev": true
+ },
+ "pluralize": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
+ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "protobufjs": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz",
+ "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==",
+ "requires": {
+ "ascli": "~1",
+ "bytebuffer": "~5",
+ "glob": "^7.0.5",
+ "yargs": "^3.10.0"
+ },
+ "dependencies": {
+ "yargs": {
+ "version": "3.32.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
+ "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
+ "requires": {
+ "camelcase": "^2.0.1",
+ "cliui": "^3.0.3",
+ "decamelize": "^1.1.1",
+ "os-locale": "^1.4.0",
+ "string-width": "^1.0.1",
+ "window-size": "^0.1.4",
+ "y18n": "^3.2.0"
+ }
+ }
+ }
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ },
+ "readable-stream": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
+ "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "reflect-metadata": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
+ "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
+ },
+ "regexpp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz",
+ "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==",
+ "dev": true
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
+ },
+ "require-uncached": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
+ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
+ "dev": true,
+ "requires": {
+ "caller-path": "^0.1.0",
+ "resolve-from": "^1.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
+ "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "^2.1.0"
+ }
+ },
+ "rx-lite": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
+ "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
+ "dev": true
+ },
+ "rx-lite-aggregates": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
+ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+ "dev": true,
+ "requires": {
+ "rx-lite": "*"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+ },
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+ "requires": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "sinon": {
+ "version": "6.3.5",
+ "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.3.5.tgz",
+ "integrity": "sha512-xgoZ2gKjyVRcF08RrIQc+srnSyY1JDJtxu3Nsz07j1ffjgXoY6uPLf/qja6nDBZgzYYEovVkFryw2+KiZz11xQ==",
+ "dev": true,
+ "requires": {
+ "@sinonjs/commons": "^1.0.2",
+ "@sinonjs/formatio": "^3.0.0",
+ "@sinonjs/samsam": "^2.1.2",
+ "diff": "^3.5.0",
+ "lodash.get": "^4.4.2",
+ "lolex": "^2.7.5",
+ "nise": "^1.4.5",
+ "supports-color": "^5.5.0",
+ "type-detect": "^4.0.8"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "sinon-chai": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.3.0.tgz",
+ "integrity": "sha512-r2JhDY7gbbmh5z3Q62pNbrjxZdOAjpsqW/8yxAZRSqLZqowmfGZPGUZPFf3UX36NLis0cv8VEM5IJh9HgkSOAA==",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
+ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz",
+ "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "table": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
+ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==",
+ "dev": true,
+ "requires": {
+ "ajv": "^5.2.3",
+ "ajv-keywords": "^2.1.0",
+ "chalk": "^2.1.0",
+ "lodash": "^4.17.4",
+ "slice-ansi": "1.0.0",
+ "string-width": "^2.1.1"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "^4.6.0",
+ "fast-deep-equal": "^1.0.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.3.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "text-hex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
+ "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "dev": true
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ },
+ "triple-beam": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
+ "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+ },
+ "window-size": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
+ "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY="
+ },
+ "winston": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz",
+ "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==",
+ "requires": {
+ "async": "^2.6.1",
+ "diagnostics": "^1.1.1",
+ "is-stream": "^1.1.0",
+ "logform": "^2.1.1",
+ "one-time": "0.0.4",
+ "readable-stream": "^3.1.1",
+ "stack-trace": "0.0.x",
+ "triple-beam": "^1.3.0",
+ "winston-transport": "^4.3.0"
+ }
+ },
+ "winston-transport": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz",
+ "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==",
+ "requires": {
+ "readable-stream": "^2.3.6",
+ "triple-beam": "^1.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "write": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
+ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ },
+ "yargs": {
+ "version": "10.1.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz",
+ "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==",
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.1.1",
+ "find-up": "^2.1.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^8.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "os-locale": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+ "requires": {
+ "execa": "^0.7.0",
+ "lcid": "^1.0.0",
+ "mem": "^1.1.0"
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz",
+ "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",
+ "requires": {
+ "camelcase": "^4.1.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ }
+ }
+ }
+ }
+}
diff --git a/library-tracker/organization/conrad-hilton/contract/package.json b/library-tracker/organization/conrad-hilton/contract/package.json
new file mode 100644
index 00000000..e523a73f
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/package.json
@@ -0,0 +1,49 @@
+{
+ "name": "papercontract",
+ "version": "0.0.4",
+ "description": "Papernet Contract",
+ "main": "index.js",
+ "engines": {
+ "node": ">=8",
+ "npm": ">=5"
+ },
+ "scripts": {
+ "lint": "eslint .",
+ "pretest": "npm run lint",
+ "test": "nyc mocha test --recursive",
+ "start": "fabric-chaincode-node start",
+ "mocha": "mocha test --recursive"
+ },
+ "engineStrict": true,
+ "author": "hyperledger",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "fabric-contract-api": "~1.4.0",
+ "fabric-shim": "~1.4.0"
+ },
+ "devDependencies": {
+ "chai": "^4.1.2",
+ "chai-as-promised": "^7.1.1",
+ "eslint": "^4.19.1",
+ "mocha": "^5.2.0",
+ "nyc": "^12.0.2",
+ "sinon": "^6.0.0",
+ "sinon-chai": "^3.2.0"
+ },
+ "nyc": {
+ "exclude": [
+ "coverage/**",
+ "test/**"
+ ],
+ "reporter": [
+ "text-summary",
+ "html"
+ ],
+ "all": true,
+ "check-coverage": true,
+ "statements": 100,
+ "branches": 100,
+ "functions": 100,
+ "lines": 100
+ }
+}
diff --git a/library-tracker/organization/conrad-hilton/contract/test/contract.js b/library-tracker/organization/conrad-hilton/contract/test/contract.js
new file mode 100644
index 00000000..e0aafd5e
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/contract/test/contract.js
@@ -0,0 +1,41 @@
+/*
+SPDX-License-Identifier: Apache-2.0
+*/
+'use strict';
+
+const Chaincode = require('../lib/chaincode');
+const { Stub } = require('fabric-shim');
+
+require('chai').should();
+const sinon = require('sinon');
+
+describe('Chaincode', () => {
+
+ describe('#Init', () => {
+
+ it('should work', async () => {
+ const cc = new Chaincode();
+ const stub = sinon.createStubInstance(Stub);
+ stub.getFunctionAndParameters.returns({ fcn: 'initFunc', params: [] });
+ const res = await cc.Init(stub);
+ res.status.should.equal(Stub.RESPONSE_CODE.OK);
+ });
+
+ });
+
+ describe('#Invoke', async () => {
+
+ it('should work', async () => {
+ const cc = new Chaincode();
+ const stub = sinon.createStubInstance(Stub);
+ stub.getFunctionAndParameters.returns({ fcn: 'initFunc', params: [] });
+ let res = await cc.Init(stub);
+ res.status.should.equal(Stub.RESPONSE_CODE.OK);
+ stub.getFunctionAndParameters.returns({ fcn: 'invokeFunc', params: [] });
+ res = await cc.Invoke(stub);
+ res.status.should.equal(Stub.RESPONSE_CODE.OK);
+ });
+
+ });
+
+});
diff --git a/library-tracker/organization/conrad-hilton/gateway/networkConnection.yaml b/library-tracker/organization/conrad-hilton/gateway/networkConnection.yaml
new file mode 100644
index 00000000..8da20358
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/gateway/networkConnection.yaml
@@ -0,0 +1,132 @@
+---
+#
+# The network connection profile provides client applications the information about the target
+# blockchain network that are necessary for the applications to interact with it. These are all
+# knowledge that must be acquired from out-of-band sources. This file provides such a source.
+#
+name: "basic-network"
+
+#
+# Any properties with an "x-" prefix will be treated as application-specific, exactly like how naming
+# in HTTP headers or swagger properties work. The SDK will simply ignore these fields and leave
+# them for the applications to process. This is a mechanism for different components of an application
+# to exchange information that are not part of the standard schema described below. In particular,
+# the "x-type" property with the "hlfv1" value example below is used by Hyperledger Composer to
+# determine the type of Fabric networks (v0.6 vs. v1.0) it needs to work with.
+#
+x-type: "hlfv1"
+
+#
+# Describe what the target network is/does.
+#
+description: "The basic network"
+
+#
+# Schema version of the content. Used by the SDK to apply the corresponding parsing rules.
+#
+version: "1.0"
+
+client:
+ organization: Org1
+
+#
+# [Optional]. But most apps would have this section so that channel objects can be constructed
+# based on the content below. If an app is creating channels, then it likely will not need this
+# section.
+#
+channels:
+ # name of the channel
+ mychannel:
+ # Required. list of orderers designated by the application to use for transactions on this
+ # channel. This list can be a result of access control ("org1" can only access "ordererA"), or
+ # operational decisions to share loads from applications among the orderers. The values must
+ # be "names" of orgs defined under "organizations/peers"
+ orderers:
+ - orderer.example.com
+
+ # Required. list of peers from participating orgs
+ peers:
+ peer0.org1.example.com:
+ # [Optional]. will this peer be sent transaction proposals for endorsement? The peer must
+ # have the chaincode installed. The app can also use this property to decide which peers
+ # to send the chaincode install request. Default: true
+ endorsingPeer: true
+
+ # [Optional]. will this peer be sent query proposals? The peer must have the chaincode
+ # installed. The app can also use this property to decide which peers to send the
+ # chaincode install request. Default: true
+ chaincodeQuery: true
+
+ # [Optional]. will this peer be sent query proposals that do not require chaincodes, like
+ # queryBlock(), queryTransaction(), etc. Default: true
+ ledgerQuery: true
+
+ # [Optional]. will this peer be the target of the SDK's listener registration? All peers can
+ # produce events but the app typically only needs to connect to one to listen to events.
+ # Default: true
+ eventSource: true
+
+#
+# list of participating organizations in this network
+#
+organizations:
+ Org1:
+ mspid: Org1MSP
+
+ peers:
+ - peer0.org1.example.com
+
+ # [Optional]. Certificate Authorities issue certificates for identification purposes in a Fabric based
+ # network. Typically certificates provisioning is done in a separate process outside of the
+ # runtime network. Fabric-CA is a special certificate authority that provides a REST APIs for
+ # dynamic certificate management (enroll, revoke, re-enroll). The following section is only for
+ # Fabric-CA servers.
+ certificateAuthorities:
+ - ca-org1
+
+#
+# List of orderers to send transaction and channel create/update requests to. For the time
+# being only one orderer is needed. If more than one is defined, which one get used by the
+# SDK is implementation specific. Consult each SDK's documentation for its handling of orderers.
+#
+orderers:
+ orderer.example.com:
+ url: grpc://localhost:7050
+
+ # these are standard properties defined by the gRPC library
+ # they will be passed in as-is to gRPC client constructor
+ grpcOptions:
+ ssl-target-name-override: orderer.example.com
+
+#
+# List of peers to send various requests to, including endorsement, query
+# and event listener registration.
+#
+peers:
+ peer0.org1.example.com:
+ # this URL is used to send endorsement and query requests
+ url: grpc://localhost:7051
+
+ grpcOptions:
+ ssl-target-name-override: peer0.org1.example.com
+ request-timeout: 120001
+
+# Fabric-CA is a special kind of Certificate Authority provided by Hyperledger Fabric which allows
+# certificate management to be done via REST APIs. Application may choose to use a standard
+# Certificate Authority instead of Fabric-CA, in which case this section would not be specified.
+#
+certificateAuthorities:
+ ca-org1:
+ url: http://localhost:7054
+ # the properties specified under this object are passed to the 'http' client verbatim when
+ # making the request to the Fabric-CA server
+ httpOptions:
+ verify: false
+
+ # Fabric-CA supports dynamic user enrollment via REST APIs. A "root" user, a.k.a registrar, is
+ # needed to enroll and invoke new users.
+ registrar:
+ - enrollId: admin
+ enrollSecret: adminpw
+ # [Optional] The optional name of the CA.
+ caName: ca-org1
diff --git a/library-tracker/organization/conrad-hilton/gateway/papernetConnection.yaml b/library-tracker/organization/conrad-hilton/gateway/papernetConnection.yaml
new file mode 100644
index 00000000..7fc40283
--- /dev/null
+++ b/library-tracker/organization/conrad-hilton/gateway/papernetConnection.yaml
@@ -0,0 +1,225 @@
+---
+#
+# The network connection profile provides client applications the information about the target
+# blockchain network that are necessary for the applications to interact with it. These are all
+# knowledge that must be acquired from out-of-band sources. This file provides such a source.
+#
+name: "finance-networks"
+
+#
+# Any properties with an "x-" prefix will be treated as application-specific, exactly like how naming
+# in HTTP headers or swagger properties work. The SDK will simply ignore these fields and leave
+# them for the applications to process. This is a mechanism for different components of an application
+# to exchange information that are not part of the standard schema described below. In particular,
+# the "x-type" property with the "hlfv1" value example below is used by Hyperledger Composer to
+# determine the type of Fabric networks (v0.6 vs. v1.0) it needs to work with.
+#
+x-type: "hlfv1"
+
+#
+# Describe what the target network is/does.
+#
+description: "A gateway connection file for the PaperNet networks"
+
+#
+# Schema version of the content. Used by the SDK to apply the corresponding parsing rules.
+#
+version: "1.0"
+
+#
+# The client section is SDK-specific. The sample below is for the node.js SDK
+#
+#client:
+ # Which organization does this application instance belong to? The value must be the name of an org
+ # defined under "organizations"
+ #organization: Org1
+
+ # Some SDKs support pluggable KV stores, the properties under "credentialStore"
+ # are implementation specific
+ #credentialStore:
+ # [Optional]. Specific to FileKeyValueStore.js or similar implementations in other SDKs. Can be others
+ # if using an alternative impl. For instance, CouchDBKeyValueStore.js would require an object
+ # here for properties like url, db name, etc.
+ #path: "/tmp/hfc-kvs"
+
+ # [Optional]. Specific to the CryptoSuite implementation. Software-based implementations like
+ # CryptoSuite_ECDSA_AES.js in node SDK requires a key store. PKCS#11 based implementations does
+ # not.
+ #cryptoStore:
+ # Specific to the underlying KeyValueStore that backs the crypto key store.
+ #path: "/tmp/hfc-cvs"
+
+ # [Optional]. Specific to Composer environment
+ #wallet: wallet-name
+
+#
+# [Optional]. But most apps would have this section so that channel objects can be constructed
+# based on the content below. If an app is creating channels, then it likely will not need this
+# section.
+#
+channels:
+ # name of the channel
+ papernet:
+ # Required. list of orderers designated by the application to use for transactions on this
+ # channel. This list can be a result of access control ("org1" can only access "ordererA"), or
+ # operational decisions to share loads from applications among the orderers. The values must
+ # be "names" of orgs defined under "organizations/peers"
+ orderers:
+ - orderer.magnetocorp.com
+
+ # Required. list of peers from participating orgs
+ peers:
+ peer1.magnetocorp.com:
+ # [Optional]. will this peer be sent transaction proposals for endorsement? The peer must
+ # have the chaincode installed. The app can also use this property to decide which peers
+ # to send the chaincode install request. Default: true
+ endorsingPeer: true
+
+ # [Optional]. will this peer be sent query proposals? The peer must have the chaincode
+ # installed. The app can also use this property to decide which peers to send the
+ # chaincode install request. Default: true
+ chaincodeQuery: true
+
+ # [Optional]. will this peer be sent query proposals that do not require chaincodes, like
+ # queryBlock(), queryTransaction(), etc. Default: true
+ ledgerQuery: true
+
+ # [Optional]. will this peer be the target of the SDK's listener registration? All peers can
+ # produce events but the app typically only needs to connect to one to listen to events.
+ # Default: true
+ eventSource: true
+
+ peer2.digibank.com:
+ endorsingPeer: true
+ chaincodeQuery: false
+ ledgerQuery: true
+ eventSource: true
+
+ # [Optional]. what chaincodes are expected to exist on this channel? The application can use
+ # this information to validate that the target peers are in the expected state by comparing
+ # this list with the query results of getInstalledChaincodes() and getInstantiatedChaincodes()
+ chaincodes:
+ # the format follows the "cannonical name" of chaincodes by fabric code
+ - example02:v1
+ - marbles:1.0
+
+#
+# list of participating organizations in this network
+#
+organizations:
+ Org1:
+ mspid: magnetocorpMSP
+
+ peers:
+ - peer1.magnetocorp.com
+
+ # [Optional]. Certificate Authorities issue certificates for identification purposes in a Fabric based
+ # network. Typically certificates provisioning is done in a separate process outside of the
+ # runtime network. Fabric-CA is a special certificate authority that provides a REST APIs for
+ # dynamic certificate management (enroll, revoke, re-enroll). The following section is only for
+ # Fabric-CA servers.
+ certificateAuthorities:
+ - ca-magnetocorp
+
+ # [Optional]. If the application is going to make requests that are reserved to organization
+ # administrators, including creating/updating channels, installing/instantiating chaincodes, it
+ # must have access to the admin identity represented by the private key and signing certificate.
+ # Both properties can be the PEM string or local path to the PEM file. Note that this is mainly for
+ # convenience in development mode, production systems should not expose sensitive information
+ # this way. The SDK should allow applications to set the org admin identity via APIs, and only use
+ # this route as an alternative when it exists.
+ adminPrivateKey:
+ path: commercial-paper/organization/magnetocorp/users/Admin@magnetocorp/keystore/9022d671ceedbb24af3ea69b5a8136cc64203df6b9920e26f48123fcfcb1d2e9_sk
+ signedCert:
+ path: comercial-paper/organization/magnetocorp/users/Admin@magnetocorp.com/signcerts/Admin@magnetocorp.com-cert.pem
+
+ # the profile will contain public information about organizations other than the one it belongs to.
+ # These are necessary information to make transaction lifecycles work, including MSP IDs and
+ # peers with a public URL to send transaction proposals. The file will not contain private
+ # information reserved for members of the organization, such as admin key and certificate,
+ # fabric-ca registrar enroll ID and secret, etc.
+ Org2:
+ mspid: digibankMSP
+ peers:
+ - peer1.digibank.com
+ certificateAuthorities:
+ - ca-digibank
+ adminPrivateKey:
+ path: commercial-paper/organization/digibank/users/Admin@digibank.com/keystore/5a983ddcbefe52a7f9b8ee5b85a590c3e3a43c4ccd70c7795bec504e7f74848d_sk
+ signedCert:
+ path: commercial-paper/organization/digibank/users/Admin@digibank.com/signcerts/Admin@digibank.com-cert.pem
+
+#
+# List of orderers to send transaction and channel create/update requests to. For the time
+# being only one orderer is needed. If more than one is defined, which one get used by the
+# SDK is implementation specific. Consult each SDK's documentation for its handling of orderers.
+#
+orderers:
+ orderer.magnetocorp.com:
+ url: grpcs://localhost:7050
+
+ # these are standard properties defined by the gRPC library
+ # they will be passed in as-is to gRPC client constructor
+ grpcOptions:
+ ssl-target-name-override: orderer.example.com
+
+ tlsCACerts:
+ path: comercial-paper/organization/magnetocorp/orderer/orderer.magnetocorp.com/tlscacerts/example.com-cert.pem
+
+#
+# List of peers to send various requests to, including endorsement, query
+# and event listener registration.
+#
+peers:
+ peer1.magnetocorp.com:
+ # this URL is used to send endorsement and query requests
+ url: grpcs://localhost:7051
+
+ grpcOptions:
+ ssl-target-name-override: peer1.magnetocorp.com
+ request-timeout: 120
+
+ tlsCACerts:
+ path: certificates/magnetocorp/magnetocorp.com-cert.pem
+
+ peer1.digibank.com:
+ url: grpcs://localhost:8051
+ grpcOptions:
+ ssl-target-name-override: peer1.digibank.com
+ tlsCACerts:
+ path: certificates/digibank/digibank.com-cert.pem
+
+#
+# Fabric-CA is a special kind of Certificate Authority provided by Hyperledger Fabric which allows
+# certificate management to be done via REST APIs. Application may choose to use a standard
+# Certificate Authority instead of Fabric-CA, in which case this section would not be specified.
+#
+certificateAuthorities:
+ ca-org1:
+ url: https://localhost:7054
+ # the properties specified under this object are passed to the 'http' client verbatim when
+ # making the request to the Fabric-CA server
+ httpOptions:
+ verify: false
+ tlsCACerts:
+ path: commercial-paper/organization/magnetocorp/ca/magnetocorp.com-cert.pem
+
+ # Fabric-CA supports dynamic user enrollment via REST APIs. A "root" user, a.k.a registrar, is
+ # needed to enroll and invoke new users.
+ registrar:
+ - enrollId: admin
+ enrollSecret: adminpw
+ # [Optional] The optional name of the CA.
+ caName: ca-magnetocorp
+
+ ca-org2:
+ url: https://localhost:8054
+ httpOptions:
+ verify: false
+ tlsCACerts:
+ path: commercial-paper/organization/digibank/ca/digibank.com-cert.pem
+ registrar:
+ - enrollId: admin
+ enrollSecret: adminpw
+ # [Optional] The optional name of the CA.
+ caName: ca-digibank
\ No newline at end of file
diff --git a/library-tracker/organization/magnetocorp/application-java/.settings/org.eclipse.core.resources.prefs b/library-tracker/organization/magnetocorp/application-java/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 7a531392..00000000
--- a/library-tracker/organization/magnetocorp/application-java/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-eclipse.preferences.version=1
-encoding/=UTF-8
-encoding/src=UTF-8
diff --git a/library-tracker/organization/magnetocorp/contract-java/.classpath b/library-tracker/organization/magnetocorp/contract-java/.classpath
deleted file mode 100644
index b79fc0c5..00000000
--- a/library-tracker/organization/magnetocorp/contract-java/.classpath
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/library-tracker/organization/magnetocorp/contract-java/.gitignore b/library-tracker/organization/magnetocorp/contract-java/.gitignore
deleted file mode 100644
index 25f5f86a..00000000
--- a/library-tracker/organization/magnetocorp/contract-java/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-.gradle/
-build/
-bin/
\ No newline at end of file
diff --git a/library-tracker/organization/magnetocorp/contract-java/.settings/org.eclipse.buildship.core.prefs b/library-tracker/organization/magnetocorp/contract-java/.settings/org.eclipse.buildship.core.prefs
deleted file mode 100644
index e8895216..00000000
--- a/library-tracker/organization/magnetocorp/contract-java/.settings/org.eclipse.buildship.core.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-connection.project.dir=
-eclipse.preferences.version=1