Compare commits

..

No commits in common. "main" and "v4.0.0-2024-03-14-05-31-28" have entirely different histories.

554 changed files with 13188 additions and 853403 deletions

View File

@ -6,7 +6,7 @@ stages:
build-android:
stage: build
image: walljm/gradle_android:8.2.1-jdk17-android34-node22
image: walljm/gradle_android:8.0.2-jdk17-33-node1
before_script:
- cd ./src/android
- bash ./install-sdk.sh
@ -29,7 +29,7 @@ build-android:
test:
stage: test
image: walljm/node-chrome-headless:22.4-bookworm
image: walljm/node-chrome-headless:21.6
variables:
NODE_OPTIONS: "--max_old_space_size=2048"
script:
@ -68,7 +68,7 @@ deploy-prod-site:
deploy-android:
stage: prod
image: walljm/gradle_android:8.2.1-jdk17-android34-node22
image: walljm/gradle_android:8.0.2-jdk17-33-node1
needs:
- build-android
before_script:

View File

@ -1,4 +1,4 @@
FROM node:22.4-bookworm
FROM node:21.6.2-bookworm
RUN apt-get update -qqy \
&& apt-get -qqy install \

View File

@ -1,2 +1,2 @@
docker build -t walljm/node-chrome-headless:22.4-bookworm .
docker push walljm/node-chrome-headless:22.4-bookworm
docker build -t walljm/node-chrome-headless:21.6 .
docker push walljm/node-chrome-headless:21.6

View File

@ -1,5 +1,5 @@
FROM gradle:8.2.1-jdk17-focal
FROM gradle:8.0.2-jdk17-focal
# Install Git and dependencies
RUN apt-get update \
@ -7,7 +7,7 @@ RUN apt-get update \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists /var/cache/apt
RUN curl -L -o node.tar.gz "https://nodejs.org/dist/v22.4.1/node-v22.4.1-linux-x64.tar.gz" && \
RUN curl -L -o node.tar.gz "https://nodejs.org/dist/v21.6.2/node-v21.6.2-linux-x64.tar.gz" && \
tar -xzf node.tar.gz -C /usr/local --strip-components=1 && \
rm node.tar.gz && \
ln -s /usr/local/bin/node /usr/local/bin/nodejs
@ -42,7 +42,7 @@ RUN $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --update
RUN $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --verbose \
"build-tools;34.0.0" \
"build-tools;30.0.3" \
"platforms;android-34" \
"platforms;android-33" \
"platform-tools"

View File

@ -1,2 +1,2 @@
docker build -t walljm/gradle_android:8.2.1-jdk17-android34-node22 .
docker push walljm/gradle_android:8.2.1-jdk17-android34-node22
docker build -t walljm/gradle_android:8.0.2-jdk17-33-node1 .
docker push walljm/gradle_android:8.0.2-jdk17-33-node1

View File

@ -85,7 +85,7 @@ dependencies {
implementation 'com.google.firebase:firebase-auth'
// Also declare the dependency for the Google Play services library and specify its version
implementation 'com.google.android.gms:play-services-auth:21.2.0'
implementation 'com.google.android.gms:play-services-auth:21.0.0'
}

View File

@ -7,8 +7,8 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.2.1'
classpath 'com.google.gms:google-services:4.4.2'
classpath 'com.android.tools.build:gradle:8.0.2'
classpath 'com.google.gms:google-services:4.4.1'
classpath "com.github.triplet.gradle:play-publisher:3.8.1"
// NOTE: Do not place your application dependencies here; they belong

View File

@ -9,7 +9,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.2.1'
classpath 'com.android.tools.build:gradle:8.0.0'
}
}
@ -17,10 +17,10 @@ apply plugin: 'com.android.library'
android {
namespace "capacitor.cordova.android.plugins"
compileSdk project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 34
compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 33
defaultConfig {
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 34
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 33
versionCode 1
versionName "1.0"
}

View File

@ -1,15 +1,15 @@
ext {
minSdkVersion = 22
firebaseMessagingVersion = '23.3.1'
compileSdkVersion = 34
targetSdkVersion = 34
androidxActivityVersion = '1.8.0'
firebaseMessagingVersion = '23.0.5'
compileSdkVersion = 33
targetSdkVersion = 33
androidxActivityVersion = '1.7.0'
androidxAppCompatVersion = '1.6.1'
androidxCoordinatorLayoutVersion = '1.2.0'
androidxCoreVersion = '1.12.0'
androidxFragmentVersion = '1.6.2'
androidxCoreVersion = '1.10.0'
androidxFragmentVersion = '1.5.6'
coreSplashScreenVersion = '1.0.1'
androidxWebkitVersion = '1.9.0'
androidxWebkitVersion = '1.6.1'
junitVersion = '4.13.2'
androidxJunitVersion = '1.1.5'
androidxEspressoCoreVersion = '3.5.1'

View File

@ -5,9 +5,9 @@ PODS:
- AppAuth/Core (1.7.1)
- AppAuth/ExternalUserAgent (1.7.1):
- AppAuth/Core
- Capacitor (6.1.0):
- Capacitor (5.7.0):
- CapacitorCordova
- CapacitorCordova (6.1.0)
- CapacitorCordova (5.7.0)
- CodetrixStudioCapacitorGoogleAuth (0.0.1):
- Capacitor
- GoogleSignIn (~> 6.2.4)
@ -42,8 +42,8 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
AppAuth: e93b919be5dbcbba49555011ce94f7d716368574
Capacitor: 187bd7847b6f71467015a20200a1a071be3e5f14
CapacitorCordova: be703980ca797f847c3356f78fa175d21c8330c2
Capacitor: fc155ee2ee45a2093d716f13cf5aa5a865e2d85a
CapacitorCordova: e825fce1a2e14e4b5730641c7e098dccf74397b7
CodetrixStudioCapacitorGoogleAuth: fcce058390347c1ce5d8ac4764bdf1f5c1ee233b
GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a
GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd

12119
src/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -16,51 +16,51 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^18.1.0",
"@angular/cdk": "^18.0.6",
"@angular/common": "^18.1.0",
"@angular/compiler": "^18.1.0",
"@angular/core": "^18.1.0",
"@angular/fire": "^18.0.1",
"@angular/forms": "^18.1.0",
"@angular/material": "^18.0.6",
"@angular/platform-browser": "^18.1.0",
"@angular/platform-browser-dynamic": "^18.1.0",
"@angular/router": "^18.1.0",
"@capacitor/android": "^6.0.0",
"@capacitor/core": "^6.0.0",
"@capacitor/ios": "^6.0.0",
"@angular/animations": "^17.2.3",
"@angular/cdk": "^17.2.1",
"@angular/common": "^17.2.3",
"@angular/compiler": "^17.2.3",
"@angular/core": "^17.2.3",
"@angular/fire": "^17.0.1",
"@angular/forms": "^17.2.3",
"@angular/material": "^17.2.1",
"@angular/platform-browser": "^17.2.3",
"@angular/platform-browser-dynamic": "^17.2.3",
"@angular/router": "^17.2.3",
"@capacitor/android": "^5.7.0",
"@capacitor/core": "^5.7.0",
"@capacitor/ios": "^5.7.0",
"@codetrix-studio/capacitor-google-auth": "^3.4.0-rc.0",
"@ngx-pwa/local-storage": "^18.0.0",
"@ngx-pwa/local-storage": "^17.0.0",
"angular2-uuid": "^1.1.1",
"firebase": "^10.8.0",
"marked": "^9.0.0",
"ngx-markdown": "^18.0.0",
"ngx-markdown": "^17.1.1",
"reselect": "^5.1.0",
"rxjs": "^7.8.1",
"tslib": "^2.6.2",
"zone.js": "~0.14.4"
},
"devDependencies": {
"@angular-devkit/architect": "0.1800.7",
"@angular-devkit/build-angular": "^18.0.7",
"@angular-eslint/builder": "18.1.0",
"@angular-eslint/eslint-plugin": "18.1.0",
"@angular-eslint/eslint-plugin-template": "18.1.0",
"@angular-eslint/schematics": "18.1.0",
"@angular-eslint/template-parser": "18.1.0",
"@angular/cli": "^18.0.7",
"@angular/compiler-cli": "^18.1.0",
"@capacitor/cli": "^6.0.0",
"@angular-devkit/architect": "0.1702.1",
"@angular-devkit/build-angular": "^17.2.1",
"@angular-eslint/builder": "17.2.1",
"@angular-eslint/eslint-plugin": "17.2.1",
"@angular-eslint/eslint-plugin-template": "17.2.1",
"@angular-eslint/schematics": "17.2.1",
"@angular-eslint/template-parser": "17.2.1",
"@angular/cli": "^17.2.1",
"@angular/compiler-cli": "^17.2.1",
"@capacitor/cli": "^5.7.0",
"@cypress/schematic": "^2.5.1",
"@types/jasmine": "~5.1.4",
"@types/jasminewd2": "~2.0.13",
"@types/node": "^20.11.21",
"@typescript-eslint/eslint-plugin": "^7.2.0",
"@typescript-eslint/parser": "^7.2.0",
"cypress": "13.6.6",
"@typescript-eslint/eslint-plugin": "7.1.0",
"@typescript-eslint/parser": "^7.1.0",
"cypress": "latest",
"eslint": "^8.57.0",
"eslint-plugin-deprecation": "^3.0.0",
"eslint-plugin-deprecation": "^2.0.0",
"eslint-plugin-optimize-regex": "^1.2.1",
"eslint-plugin-simple-import-sort": "^12.0.0",
"eslint-plugin-unused-imports": "^3.1.0",
@ -77,7 +77,7 @@
"karma-jasmine-html-reporter": "^2.1.0",
"open": "^10.0.4",
"ts-node": "~10.9.2",
"typescript": "~5.4.5"
"typescript": "~5.3.3"
},
"browserslist": [
"last 1 Chrome version",
@ -89,4 +89,4 @@
"not IE 9-10 ",
"not IE 11 "
]
}
}

View File

@ -1,6 +1,6 @@
import { ClipboardModule } from '@angular/cdk/clipboard';
import { DragDropModule } from '@angular/cdk/drag-drop';
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
import { HttpClientModule } from '@angular/common/http';
import { APP_ID, NgModule } from '@angular/core';
import { AngularFireModule } from '@angular/fire/compat';
import { AngularFireAuthModule } from '@angular/fire/compat/auth';
@ -41,7 +41,6 @@ import { MarkedOptions, MarkedRenderer } from 'ngx-markdown';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { AddToPageModalComponent } from './components/add-to-page-modal/add-to-page-modal.component';
import { CardEditModalComponent } from './components/card-edit-modal/card-edit-modal.component';
import { HelpModalComponent } from './components/help-modal/help-modal.component';
import { NoteEditModalComponent } from './components/note/edit-modal/note-edit-modal.component';
import { NoteCardComponent } from './components/note/note-card.component';
@ -76,69 +75,79 @@ export function markedOptionsFactory(): MarkedOptions {
};
}
@NgModule({ declarations: [
AppComponent,
NotesAdminPageComponent,
SavedPagesAdminPageComponent,
SavedPageCardComponent,
HelpModalComponent,
SearchPageComponent,
PassageCardComponent,
StrongsComponent,
StrongsCardComponent,
StrongsModalComponent,
WordsCardComponent,
NoteCardComponent,
PageEditModalComponent,
NoteEditModalComponent,
AddToPageModalComponent,
VersePickerModalComponent,
SettingsComponent,
OkCancelModalComponent,
CardEditModalComponent,
],
bootstrap: [AppComponent], imports: [BrowserModule,
ReactiveFormsModule,
FormsModule,
AppRoutingModule,
BrowserAnimationsModule,
MarkdownModule.forRoot({
markedOptions: {
provide: MARKED_OPTIONS,
useFactory: markedOptionsFactory,
},
}),
AngularFireModule.initializeApp(FirebaseConfig),
AngularFireAuthModule,
AngularFireDatabaseModule,
DragDropModule,
MatSidenavModule,
MatChipsModule,
MatToolbarModule,
MatIconModule,
MatAutocompleteModule,
MatBadgeModule,
MatBottomSheetModule,
MatButtonModule,
MatButtonToggleModule,
MatCardModule,
MatCheckboxModule,
MatStepperModule,
MatDialogModule,
MatDividerModule,
MatExpansionModule,
MatInputModule,
MatListModule,
MatMenuModule,
MatNativeDateModule,
MatRadioModule,
MatRippleModule,
MatSelectModule,
MatSliderModule,
MatSlideToggleModule,
MatSnackBarModule,
MatTooltipModule,
MatFormFieldModule,
MatTabsModule,
ClipboardModule], providers: [{ provide: APP_ID, useValue: 'ng-cli-universal' }, provideHttpClient(withInterceptorsFromDi())] })
@NgModule({
declarations: [
AppComponent,
NotesAdminPageComponent,
SavedPagesAdminPageComponent,
SavedPageCardComponent,
HelpModalComponent,
SearchPageComponent,
PassageCardComponent,
StrongsComponent,
StrongsCardComponent,
StrongsModalComponent,
WordsCardComponent,
NoteCardComponent,
PageEditModalComponent,
NoteEditModalComponent,
AddToPageModalComponent,
VersePickerModalComponent,
SettingsComponent,
OkCancelModalComponent,
],
imports: [
BrowserModule,
HttpClientModule,
ReactiveFormsModule,
FormsModule,
AppRoutingModule,
BrowserAnimationsModule,
MarkdownModule.forRoot({
markedOptions: {
provide: MARKED_OPTIONS,
useFactory: markedOptionsFactory,
},
}),
AngularFireModule.initializeApp(FirebaseConfig),
AngularFireAuthModule,
AngularFireDatabaseModule,
DragDropModule,
MatSidenavModule,
MatChipsModule,
MatToolbarModule,
MatIconModule,
MatAutocompleteModule,
MatBadgeModule,
MatBottomSheetModule,
MatButtonModule,
MatButtonToggleModule,
MatCardModule,
MatCheckboxModule,
MatStepperModule,
MatDialogModule,
MatDividerModule,
MatExpansionModule,
MatInputModule,
MatListModule,
MatMenuModule,
MatNativeDateModule,
MatRadioModule,
MatRippleModule,
MatSelectModule,
MatSliderModule,
MatSlideToggleModule,
MatSnackBarModule,
MatTooltipModule,
MatFormFieldModule,
MatTabsModule,
ClipboardModule,
],
providers: [{ provide: APP_ID, useValue: 'ng-cli-universal' }],
bootstrap: [AppComponent],
})
export class AppModule {}

View File

@ -1,16 +0,0 @@
<mat-toolbar>
<mat-icon>save</mat-icon>
</mat-toolbar>
<mat-dialog-content class="content">
<form [formGroup]="form">
<mat-form-field class="page-title">
<mat-label>Query</mat-label>
<input formControlName="qry" matInput />
</mat-form-field>
</form>
<div mat-dialog-actions>
<button mat-button (click)="save()">Save</button>
<button mat-button (click)="cancel()">Cancel</button>
</div>
</mat-dialog-content>

View File

@ -1,25 +0,0 @@
.close-button {
float: right;
}
.title {
width: 100%;
padding-left: 1rem;
font-size: 1.5rem;
overflow: hidden;
}
.mat-mdc-form-field {
display: block;
}
.page-title {
min-width: 50vw;
padding-top: 12px;
}
.mat-mdc-dialog-content {
min-width: 60vw;
min-height: 20vh;
max-height: 80vh;
}

View File

@ -1,45 +0,0 @@
import { Component, Inject } from '@angular/core';
import { FormGroup, UntypedFormBuilder } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { CardItem } from 'src/app/models/card-state';
import { AppService } from 'src/app/services/app.service';
@Component({
selector: 'app-card-edit-modal',
templateUrl: 'card-edit-modal.component.html',
styleUrls: ['./card-edit-modal.component.scss'],
})
export class CardEditModalComponent {
form: FormGroup;
dialogTitle = 'Save Page using Current Cards';
oldCard: CardItem;
constructor(
@Inject(MAT_DIALOG_DATA) public data: CardEditModalData,
public dialogRef: MatDialogRef<CardEditModalComponent>,
private appService: AppService,
private fb: UntypedFormBuilder
) {
this.oldCard = data.card;
this.form = this.fb.group(data.card);
}
cancel() {
this.dialogRef.close();
}
save() {
this.appService.updateCard(
{
qry: this.form.get('qry').value,
type: this.form.get('type').value,
} as CardItem,
this.oldCard
);
this.dialogRef.close();
}
}
export interface CardEditModalData {
card: CardItem;
}

View File

@ -1,5 +1,5 @@
import { Clipboard } from '@angular/cdk/clipboard';
import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';
import { Component,ElementRef, EventEmitter, Input, Output } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { Observable } from 'rxjs';
@ -8,7 +8,6 @@ import { SubscriberBase } from '../common/subscriber-base';
import { AddToPageModalComponent } from '../components/add-to-page-modal/add-to-page-modal.component';
import { CardItem } from '../models/card-state';
import { AppService } from '../services/app.service';
import { CardEditModalComponent } from './card-edit-modal/card-edit-modal.component';
@Component({
template: '',
@ -84,12 +83,4 @@ export class CardComponent extends SubscriberBase {
moveCardUp() {
this.appService.moveCard(this.cardItem, MoveDirection.Up);
}
editReferenceModal() {
this.dialog.open(CardEditModalComponent, {
data: {
card: { ...this.cardItem } as CardItem,
},
});
}
}

View File

@ -14,21 +14,21 @@ export class PageEditModalComponent {
dialogTitle = 'Save Page using Current Cards';
constructor(
@Inject(MAT_DIALOG_DATA) public data: PageEditModalData,
@Inject(MAT_DIALOG_DATA) public title: PageEditModalData,
public dialogRef: MatDialogRef<PageEditModalComponent>,
private appService: AppService,
private fb: UntypedFormBuilder
) {
if (data) {
if (title) {
this.dialogTitle = 'Edit Page Name';
} else {
data = {
title = {
title: '',
savedPage: null,
};
}
this.form = this.fb.group(data);
this.form = this.fb.group(title);
}
cancel() {
@ -38,7 +38,7 @@ export class PageEditModalComponent {
save() {
if (this.dialogTitle === 'Edit Page Name') {
this.appService.updateSavedPage({
...this.data.savedPage,
...this.title.savedPage,
title: this.form.get('title').value,
});
} else {

View File

@ -102,10 +102,6 @@
<mat-icon>more_vert</mat-icon>
</button>
<mat-menu #moreMenu="matMenu">
<button mat-menu-item (click)="editReferenceModal()">
<mat-icon>edit</mat-icon>
<span>Edit Reference</span>
</button>
<button mat-menu-item (click)="copy()">
<mat-icon>content_copy</mat-icon>
<span>Copy Passage</span>

View File

@ -11,7 +11,3 @@
.auth-button {
width: 100%;
}
.mdc-slider__input {
padding: 0px !important;
}

View File

@ -4,14 +4,14 @@ import { UUID } from 'angular2-uuid';
import { lastValueFrom } from 'rxjs';
import { moveItem, moveItemUpOrDown } from '../common/array-operations';
import { BibleReference, Overlap, Section } from '../common/bible-reference';
import { getFromCardCache, removeFromCardCache, updateInCardCache } from '../common/card-cache-operations';
import { BibleReference, Overlap,Section } from '../common/bible-reference';
import { getFromCardCache,removeFromCardCache, updateInCardCache } from '../common/card-cache-operations';
import { mergeCardList } from '../common/card-operations';
import { HashTable } from '../common/hashtable';
import { MoveDirection } from '../common/move-direction';
import { createReducingService, IReducingAction } from '../common/state-service';
import { createReducingService,IReducingAction } from '../common/state-service';
import { IStorable, Storable, StorableType } from '../common/storable';
import { AppState, DisplaySettings, Error, PageSettings, Settings, User } from '../models/app-state';
import { AppState, DisplaySettings, Error,PageSettings, Settings, User } from '../models/app-state';
import { CardItem, CardType, DataReference } from '../models/card-state';
import { NoteItem } from '../models/note-state';
import { SavedPage } from '../models/page-state';
@ -31,7 +31,7 @@ import {
StrongsDictionary,
StrongsResult,
} from '../models/strongs-state';
import { IndexResult, WordLookupResult, WordToStem } from '../models/words-state';
import { IndexResult, WordLookupResult,WordToStem } from '../models/words-state';
const initialState: AppState = {
user: null,
@ -294,7 +294,7 @@ export const updateCardAction = (newCard: CardItem, oldCard: CardItem): AppActio
...state,
currentCards: new Storable(
state.currentCards.value.map((c) => {
if (c.type === oldCard.type && c.qry === oldCard.qry) {
if (c === oldCard) {
return newCard;
}
return c;
@ -824,11 +824,6 @@ export class AppService extends createReducingService(initialState) {
);
}
async updateCard(newCard: CardItem, oldCard: CardItem) {
const card = await this.getCardByQuery(newCard.qry.trim());
this.dispatch(updateCardAction(card, oldCard));
}
async clearCards() {
this.dispatch(clearCardsAction());
}
@ -1496,8 +1491,8 @@ export class AppService extends createReducingService(initialState) {
words.unshift('barbarian');
words.unshift('beard');
words.unshift('begettest');
words.unshift('beneath');
words.unshift('bethabara');
words.unshift('benefactor');
words.unshift('bethel');
words.unshift('bilshan');
words.unshift('blindeth');
words.unshift('booti');
@ -1511,152 +1506,152 @@ export class AppService extends createReducingService(initialState) {
words.unshift('chrysoprasus');
words.unshift('cloth');
words.unshift('common');
words.unshift('confer');
words.unshift('contendest');
words.unshift('couch');
words.unshift('creepeth');
words.unshift('cursest');
words.unshift('dare');
words.unshift('deckest');
words.unshift('delus');
words.unshift('devic');
words.unshift('direct');
words.unshift('dispos');
words.unshift('dote');
words.unshift('drown');
words.unshift('ebal');
words.unshift('eldest');
words.unshift('elkanah');
words.unshift('encount');
words.unshift('entranc');
words.unshift('escapeth');
words.unshift('eventid');
words.unshift('experi');
words.unshift('fallen');
words.unshift('feedest');
words.unshift('filth');
words.unshift('fleec');
words.unshift('forbor');
words.unshift('forsook');
words.unshift('fret');
words.unshift('gaham');
words.unshift('gazit');
words.unshift('gibbethon');
words.unshift('glede');
words.unshift('gospel');
words.unshift('groaneth');
words.unshift('hadid');
words.unshift('hammoleketh');
words.unshift('haraseth');
words.unshift('hashupha');
words.unshift('hazeroth');
words.unshift('height');
words.unshift('hereaft');
words.unshift('higher');
words.unshift('holdest');
words.unshift('hosah');
words.unshift('huram');
words.unshift('ilai');
words.unshift('indit');
words.unshift('intellig');
words.unshift('ishuai');
words.unshift('jaasiel');
words.unshift('jamin');
words.unshift('jechoniah');
words.unshift('jemuel');
words.unshift('jethlah');
words.unshift('joiakim');
words.unshift('jucal');
words.unshift('keilah');
words.unshift('kishi');
words.unshift('lade');
words.unshift('laugheth');
words.unshift('lehem');
words.unshift('lifetim');
words.unshift('loath');
words.unshift('lucif');
words.unshift('madmannah');
words.unshift('maktesh');
words.unshift('marcaboth');
words.unshift('mattock');
words.unshift('melchiah');
words.unshift('merri');
words.unshift('midian');
words.unshift('mire');
words.unshift('moder');
words.unshift('movabl');
words.unshift('naarath');
words.unshift('nazaren');
words.unshift('nephish');
words.unshift('ninth');
words.unshift('oath');
words.unshift('olivet');
words.unshift('oregim');
words.unshift('overran');
words.unshift('palet');
words.unshift('parvaim');
words.unshift('pedigre');
words.unshift('permit');
words.unshift('philetus');
words.unshift('pisidia');
words.unshift('pluck');
words.unshift('pound');
words.unshift('prey');
words.unshift('propiti');
words.unshift('purer');
words.unshift('rabbith');
words.unshift('ravin');
words.unshift('redeem');
words.unshift('remaind');
words.unshift('reproveth');
words.unshift('reverend');
words.unshift('rishathaim');
words.unshift('rudder');
words.unshift('sahadutha');
words.unshift('saphir');
words.unshift('scent');
words.unshift('sect');
words.unshift('seorim');
words.unshift('shabbethai');
words.unshift('sharaim');
words.unshift('sheepmast');
words.unshift('shethar');
words.unshift('shisha');
words.unshift('shrine');
words.unshift('signif');
words.unshift('sitnah');
words.unshift('sloth');
words.unshift('soever');
words.unshift('sow');
words.unshift('spittl');
words.unshift('state');
words.unshift('stool');
words.unshift('stronger');
words.unshift('sukkiim');
words.unshift('sweat');
words.unshift('tahanit');
words.unshift('taskmast');
words.unshift('tempteth');
words.unshift('thereabout');
words.unshift('thread');
words.unshift('timber');
words.unshift('tong');
words.unshift('travail');
words.unshift('trumpet');
words.unshift('unchang');
words.unshift('unperfect');
words.unshift('urban');
words.unshift('vashti');
words.unshift('visitest');
words.unshift('warrior');
words.unshift('web');
words.unshift('whereupon');
words.unshift('winebibb');
words.unshift('womenserv');
words.unshift('writeth');
words.unshift('zalmon');
words.unshift('zena');
words.unshift('ziphah');
words.unshift('confess');
words.unshift('contendeth');
words.unshift('coucheth');
words.unshift('crept');
words.unshift('curseth');
words.unshift('darius');
words.unshift('decketh');
words.unshift('dema');
words.unshift('devil');
words.unshift('directeth');
words.unshift('disposit');
words.unshift('doth');
words.unshift('drowsi');
words.unshift('ebe');
words.unshift('elead');
words.unshift('elkoshit');
words.unshift('encourag');
words.unshift('entreat');
words.unshift('eschew');
words.unshift('ever');
words.unshift('expert');
words.unshift('fallest');
words.unshift('feedeth');
words.unshift('filthi');
words.unshift('fleeth');
words.unshift('forborn');
words.unshift('forsookest');
words.unshift('fretteth');
words.unshift('gahar');
words.unshift('gazzam');
words.unshift('gibea');
words.unshift('glister');
words.unshift('got');
words.unshift('grope');
words.unshift('hadlai');
words.unshift('hammon');
words.unshift('harbona');
words.unshift('hasrah');
words.unshift('hazezon');
words.unshift('heinous');
words.unshift('herebi');
words.unshift('highest');
words.unshift('holdeth');
words.unshift('hosanna');
words.unshift('huri');
words.unshift('ill');
words.unshift('inexcus');
words.unshift('intend');
words.unshift('ishui');
words.unshift('jaazaniah');
words.unshift('jaminit');
words.unshift('jecoliah');
words.unshift('jeopard');
words.unshift('jethro');
words.unshift('joiarib');
words.unshift('juda');
words.unshift('kelaiah');
words.unshift('kishion');
words.unshift('laden');
words.unshift('laughter');
words.unshift('lehi');
words.unshift('lift');
words.unshift('loatheth');
words.unshift('lucius');
words.unshift('madmen');
words.unshift('malachi');
words.unshift('march');
words.unshift('maul');
words.unshift('melchizedek');
words.unshift('merrili');
words.unshift('midianit');
words.unshift('miri');
words.unshift('modest');
words.unshift('move');
words.unshift('naashon');
words.unshift('nazareth');
words.unshift('nephishesim');
words.unshift('nisan');
words.unshift('obadiah');
words.unshift('oliveyard');
words.unshift('oren');
words.unshift('overrun');
words.unshift('pallu');
words.unshift('pas');
words.unshift('peel');
words.unshift('pernici');
words.unshift('philip');
words.unshift('pison');
words.unshift('plucketh');
words.unshift('pour');
words.unshift('price');
words.unshift('proport');
words.unshift('purg');
words.unshift('rabboni');
words.unshift('ravish');
words.unshift('redeemedst');
words.unshift('remainest');
words.unshift('reput');
words.unshift('revers');
words.unshift('rissah');
words.unshift('ruddi');
words.unshift('said');
words.unshift('sapphir');
words.unshift('scepter');
words.unshift('secundus');
words.unshift('separ');
words.unshift('shachia');
words.unshift('sharar');
words.unshift('sheepshear');
words.unshift('sheva');
words.unshift('shishak');
words.unshift('shroud');
words.unshift('signifi');
words.unshift('sittest');
words.unshift('slow');
words.unshift('soft');
words.unshift('sowedst');
words.unshift('spoil');
words.unshift('station');
words.unshift('stoop');
words.unshift('strongest');
words.unshift('sum');
words.unshift('sweep');
words.unshift('tahapan');
words.unshift('tast');
words.unshift('ten');
words.unshift('thereat');
words.unshift('threaten');
words.unshift('timbrel');
words.unshift('tongu');
words.unshift('travailest');
words.unshift('trust');
words.unshift('uncircumcis');
words.unshift('unprepar');
words.unshift('urg');
words.unshift('vat');
words.unshift('visiteth');
words.unshift('wash');
words.unshift('wed');
words.unshift('wherewith');
words.unshift('winepress');
words.unshift('won');
words.unshift('written');
words.unshift('zalmonah');
words.unshift('zenan');
words.unshift('ziphim');
words.unshift('zuzim');
return words;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
[{"w":"elkoshit","r":["34:1:1"]},{"w":"ellasar","r":["1:14:1","1:14:9"]},{"w":"elm","r":["28:4:13"]},{"w":"elmodam","r":["42:3:28"]},{"w":"elnaam","r":["13:11:46"]},{"w":"elnathan","r":["12:24:8","15:8:16","24:26:22","24:36:12","24:36:25"]},{"w":"elohe-israel","r":["1:33:20"]},{"w":"eloi","r":["41:15:34"]},{"w":"elon","r":["1:26:34","1:36:2","1:46:14","4:26:26","6:19:43","7:12:11","7:12:12","11:4:9"]},{"w":"elonit","r":["4:26:26"]},{"w":"eloqu","r":["2:4:10","23:3:3","44:18:24"]},{"w":"eloth","r":["11:9:26","14:8:17","14:26:2"]},{"w":"elpaal","r":["13:8:11","13:8:12","13:8:18"]},{"w":"elpalet","r":["13:14:5"]},{"w":"els","r":["1:30:1","1:42:16","2:8:21","2:10:4","4:20:19","5:4:35","5:4:39","6:23:12","7:7:14","10:3:35","10:15:14","11:8:60","11:20:39","11:21:6","13:21:12","14:23:7","16:2:2","19:51:16","21:2:25","23:45:5","23:45:6","23:45:14","23:45:18","23:45:21","23:45:22","23:46:9","23:47:8","23:47:10","29:2:27","40:6:24","40:9:17","40:12:29","40:12:33","41:2:21","41:2:22","42:5:37","42:14:32","42:16:13","43:14:11","44:17:21","44:24:20","45:2:15","46:7:14","46:14:16","46:15:29","50:1:27","66:2:5","66:2:16"]},{"w":"eltekeh","r":["6:19:44","6:21:23"]},{"w":"eltekon","r":["6:15:59"]},{"w":"eltolad","r":["6:15:30","6:19:4"]},{"w":"elul","r":["16:6:15"]},{"w":"eluzai","r":["13:12:5"]},{"w":"elyma","r":["44:13:8"]},{"w":"elzabad","r":["13:12:12","13:26:7"]},{"w":"elzaphan","r":["2:6:22","3:10:4"]},{"w":"embalm","r":["1:50:2","1:50:3","1:50:26"]},{"w":"embolden","r":["46:8:10"]},{"w":"emboldeneth","r":["18:16:3"]},{"w":"embrac","r":["1:29:13","1:33:4","1:48:10","12:4:16","18:24:8","20:4:8","20:5:20","21:3:5","22:2:6","22:8:3","25:4:5","44:20:1","44:20:10","58:11:13"]},{"w":"embroid","r":["2:28:4","2:28:39","26:16:10","26:16:13","26:16:18","26:26:16","26:27:7","26:27:16","26:27:24"]},{"w":"embroider","r":["2:35:35","2:38:23"]},{"w":"emek","r":["6:19:27"]},{"w":"emerald","r":["2:28:18","2:39:11","26:27:16","26:28:13","66:4:3","66:21:19"]},{"w":"emerod","r":["5:28:27","9:5:6","9:5:9","9:5:12","9:6:4","9:6:5","9:6:11","9:6:17"]},{"w":"emim","r":["1:14:5","5:2:10","5:2:11"]},{"w":"emin","r":["26:16:24","26:16:31","26:16:39","26:17:22"]},{"w":"emmanuel","r":["40:1:23"]},{"w":"emmaus","r":["42:24:13"]},{"w":"empir","r":["17:1:20"]},{"w":"employ","r":["5:20:19","13:9:33","15:10:15","26:39:14"]},{"w":"empti","r":["1:24:20","1:31:42","1:37:24","1:41:27","1:42:35","2:3:21","2:23:15","2:34:20","3:14:36","5:15:13","5:16:16","7:7:16","8:1:21","8:3:17","9:6:3","9:20:18","9:20:25","9:20:27","10:1:22","12:4:3","14:24:11","16:5:13","18:22:9","18:26:7","21:11:3","23:19:6","23:24:1","23:24:3","23:29:8","23:32:6","23:34:11","24:14:3","24:48:11","24:48:12","24:51:2","24:51:34","26:24:11","28:10:1","34:2:2","34:2:10","35:1:17","38:4:12","40:12:44","41:12:3","42:1:53","42:20:10","42:20:11"]},{"w":"emptier","r":["34:2:2"]},{"w":"emul","r":["45:11:14","48:5:20"]},{"w":"en","r":["1:14:7","6:15:7","6:15:34","6:15:62","6:17:7","6:18:16","6:18:17","6:19:21","6:19:37","6:21:29","7:15:19","9:23:29","9:24:1","10:17:17","11:1:9","14:20:2","16:11:29","22:1:14","26:47:10"]},{"w":"enabl","r":["54:1:12"]},{"w":"enam","r":["6:15:34"]},{"w":"enan","r":["4:1:15","4:2:29","4:7:78","4:7:83","4:10:27","4:34:9","4:34:10","26:47:17","26:48:1"]},{"w":"encamp","r":["2:13:20","2:14:2","2:14:9","2:15:27","2:18:5","4:1:50","4:2:17","4:2:27","4:3:38","4:10:31","4:33:10","4:33:11","4:33:12","4:33:13","4:33:14","4:33:17","4:33:24","4:33:26","4:33:30","4:33:32","4:33:34","4:33:35","4:33:46","6:4:19","6:5:10","6:10:5","6:10:31","6:10:34","7:6:4","7:9:50","7:10:17","7:20:19","9:11:1","9:13:16","10:11:11","10:12:28","11:16:15","11:16:16","13:11:15","14:32:1","18:19:12","19:27:3","38:9:8"]},{"w":"encampeth","r":["19:34:7","19:53:5"]},{"w":"enchant","r":["2:7:11","2:7:22","2:8:7","2:8:18","3:19:26","4:23:23","4:24:1","5:18:10","12:17:17","12:21:6","14:33:6","21:10:11","23:47:9","23:47:12","24:27:9"]},{"w":"enclos","r":["2:28:20","2:39:6","2:39:13","7:20:43","19:17:10","19:22:16","22:4:12","22:8:9","25:3:9","42:5:6"]},{"w":"encount","r":["44:17:18"]}]

View File

@ -0,0 +1 @@
[{"w":"ellasar","r":["1:14:1","1:14:9"]},{"w":"elm","r":["28:4:13"]},{"w":"elmodam","r":["42:3:28"]},{"w":"elnaam","r":["13:11:46"]},{"w":"elnathan","r":["12:24:8","15:8:16","24:26:22","24:36:12","24:36:25"]},{"w":"elohe-israel","r":["1:33:20"]},{"w":"eloi","r":["41:15:34"]},{"w":"elon","r":["1:26:34","1:36:2","1:46:14","4:26:26","6:19:43","7:12:11","7:12:12","11:4:9"]},{"w":"elonit","r":["4:26:26"]},{"w":"eloqu","r":["2:4:10","23:3:3","44:18:24"]},{"w":"eloth","r":["11:9:26","14:8:17","14:26:2"]},{"w":"elpaal","r":["13:8:11","13:8:12","13:8:18"]},{"w":"elpalet","r":["13:14:5"]},{"w":"els","r":["1:30:1","1:42:16","2:8:21","2:10:4","4:20:19","5:4:35","5:4:39","6:23:12","7:7:14","10:3:35","10:15:14","11:8:60","11:20:39","11:21:6","13:21:12","14:23:7","16:2:2","19:51:16","21:2:25","23:45:5","23:45:6","23:45:14","23:45:18","23:45:21","23:45:22","23:46:9","23:47:8","23:47:10","29:2:27","40:6:24","40:9:17","40:12:29","40:12:33","41:2:21","41:2:22","42:5:37","42:14:32","42:16:13","43:14:11","44:17:21","44:24:20","45:2:15","46:7:14","46:14:16","46:15:29","50:1:27","66:2:5","66:2:16"]},{"w":"eltekeh","r":["6:19:44","6:21:23"]},{"w":"eltekon","r":["6:15:59"]},{"w":"eltolad","r":["6:15:30","6:19:4"]},{"w":"elul","r":["16:6:15"]},{"w":"eluzai","r":["13:12:5"]},{"w":"elyma","r":["44:13:8"]},{"w":"elzabad","r":["13:12:12","13:26:7"]},{"w":"elzaphan","r":["2:6:22","3:10:4"]},{"w":"embalm","r":["1:50:2","1:50:3","1:50:26"]},{"w":"embolden","r":["46:8:10"]},{"w":"emboldeneth","r":["18:16:3"]},{"w":"embrac","r":["1:29:13","1:33:4","1:48:10","12:4:16","18:24:8","20:4:8","20:5:20","21:3:5","22:2:6","22:8:3","25:4:5","44:20:1","44:20:10","58:11:13"]},{"w":"embroid","r":["2:28:4","2:28:39","26:16:10","26:16:13","26:16:18","26:26:16","26:27:7","26:27:16","26:27:24"]},{"w":"embroider","r":["2:35:35","2:38:23"]},{"w":"emek","r":["6:19:27"]},{"w":"emerald","r":["2:28:18","2:39:11","26:27:16","26:28:13","66:4:3","66:21:19"]},{"w":"emerod","r":["5:28:27","9:5:6","9:5:9","9:5:12","9:6:4","9:6:5","9:6:11","9:6:17"]},{"w":"emim","r":["1:14:5","5:2:10","5:2:11"]},{"w":"emin","r":["26:16:24","26:16:31","26:16:39","26:17:22"]},{"w":"emmanuel","r":["40:1:23"]},{"w":"emmaus","r":["42:24:13"]},{"w":"empir","r":["17:1:20"]},{"w":"employ","r":["5:20:19","13:9:33","15:10:15","26:39:14"]},{"w":"empti","r":["1:24:20","1:31:42","1:37:24","1:41:27","1:42:35","2:3:21","2:23:15","2:34:20","3:14:36","5:15:13","5:16:16","7:7:16","8:1:21","8:3:17","9:6:3","9:20:18","9:20:25","9:20:27","10:1:22","12:4:3","14:24:11","16:5:13","18:22:9","18:26:7","21:11:3","23:19:6","23:24:1","23:24:3","23:29:8","23:32:6","23:34:11","24:14:3","24:48:11","24:48:12","24:51:2","24:51:34","26:24:11","28:10:1","34:2:2","34:2:10","35:1:17","38:4:12","40:12:44","41:12:3","42:1:53","42:20:10","42:20:11"]},{"w":"emptier","r":["34:2:2"]},{"w":"emul","r":["45:11:14","48:5:20"]},{"w":"en","r":["1:14:7","6:15:7","6:15:34","6:15:62","6:17:7","6:18:16","6:18:17","6:19:21","6:19:37","6:21:29","7:15:19","9:23:29","9:24:1","10:17:17","11:1:9","14:20:2","16:11:29","22:1:14","26:47:10"]},{"w":"enabl","r":["54:1:12"]},{"w":"enam","r":["6:15:34"]},{"w":"enan","r":["4:1:15","4:2:29","4:7:78","4:7:83","4:10:27","4:34:9","4:34:10","26:47:17","26:48:1"]},{"w":"encamp","r":["2:13:20","2:14:2","2:14:9","2:15:27","2:18:5","4:1:50","4:2:17","4:2:27","4:3:38","4:10:31","4:33:10","4:33:11","4:33:12","4:33:13","4:33:14","4:33:17","4:33:24","4:33:26","4:33:30","4:33:32","4:33:34","4:33:35","4:33:46","6:4:19","6:5:10","6:10:5","6:10:31","6:10:34","7:6:4","7:9:50","7:10:17","7:20:19","9:11:1","9:13:16","10:11:11","10:12:28","11:16:15","11:16:16","13:11:15","14:32:1","18:19:12","19:27:3","38:9:8"]},{"w":"encampeth","r":["19:34:7","19:53:5"]},{"w":"enchant","r":["2:7:11","2:7:22","2:8:7","2:8:18","3:19:26","4:23:23","4:24:1","5:18:10","12:17:17","12:21:6","14:33:6","21:10:11","23:47:9","23:47:12","24:27:9"]},{"w":"enclos","r":["2:28:20","2:39:6","2:39:13","7:20:43","19:17:10","19:22:16","22:4:12","22:8:9","25:3:9","42:5:6"]},{"w":"encount","r":["44:17:18"]},{"w":"encourag","r":["5:1:38","5:3:28","7:20:22","9:30:6","10:11:25","14:31:4","14:35:2","19:64:5","23:41:7"]}]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More